将整个继承树映射到一张表&将每个类映射到每张表

来源:互联网 发布:网络映射什么意思 编辑:程序博客网 时间:2024/05/17 03:58
有Skiller和Sales两个类,它们都继承自Employee类。现在要将他们映射到数据库中。
· 分别编写Skiller和Sales两个类继承子Employee类,类中有相应的属性和gets、sets方法
· 编写Employee.hbm.xml文件如下(主要代码)
  <hibernate-mapping>
<class name="Employee" discriminator-value="0">
   <id name="id">
       <generator class = "native" />
   </id>
   <discriminator column="type" type="int" />
   <subclass name="Skiller" discriminator-value="1">
     <property name="skill" />
   </subclass>
   <subclass name="Sales" discriminator-value="2">
     <property name="sell" />
   </subclass>
</class>
 </hibernate-mapping>
这样,在程序里就可以用他们了。当然,将继承树映射到一张表里使得空值太多。不过效率还是蛮高的(相对单独将每一个类映射到一张表里而言)。
下面就是怎样将每个类映射成对应的一张表:
只有改一下Employee.hbm.xml配置文件就ok了,修改后的代码如下
<hibernate-mapping>
<class name="Employee">
   <id name="id">
       <generator class = "native" />
   </id>
   <joined-subclass name="Skiller" table="skiller">
     <key column="emp_id" />
     <property name="skill" />
   </joined-subclass>
   <joined-subclass name="Sales" table="sales">
      <key column="emp_id" />
      <property name="sell" />
   </joined-subclass>
</class>
 </hibernate-mapping>
本人Hibernate初学中,欢迎高手指正、传授经验,不胜感激~