使用一個類別映射多個表格

如果您有几个表格,当中有一些类似的字段,例如T_USER1有name字段与age字段,而T_USER2也有name字段与age字段,按照正常的作法,您也许会为两个表格分别设计User1与User2类别来加以对应。

然而透过entity-name的属性设定,您可以将一个类别对应至多个表格,例如:

• User.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping
 PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="onlyfun.caterpillar.User"
    entity-name="User1Entity"
           table="T_USER1">

        <id name="id" column="id" type="long">
            <generator class="native"/>
        </id>

        <property name="name" column="name" />
 
        <property name="age" column="age" />
 
    </class>

    <class name="onlyfun.caterpillar.User"
    entity-name="User2Entity"
           table="T_USER2">

        <id name="id" column="id" type="long">
            <generator class="native"/>
        </id>

        <property name="name" column="name" />
 
        <property name="age" column="age"/>
    </class>
</hibernate-mapping>

在映射文件中,T_USER1与T_USER2的映射类别都是User类别,藉由entity-name的不同,可以知道该将资料储存至哪一个表格:
        User user = new User();
        user.setName("caterpillar");
        user.setAge(new Long(30));

        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tx= session.beginTransaction();
        // 储存至T_USER1
        session.save("User1Entity", user);
        tx.commit();
        session.close();
       
        user = new User();
        user.setName("justin");
        user.setAge(new Long(32));

        session = HibernateUtil.getSessionFactory().openSession();
        tx= session.beginTransaction();
        // 储存至T_USER2
        session.save("User2Entity", user);
        tx.commit();
        session.close();

查询时也是藉由指定entity-name来取得对应的表格数据,并封装为User实例,例如以下会取得T_USER1中的资料:

User user = (User) session.load("User1Entity", new Long(1));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值