Hibernate继承映射详解


在面向对象的程序领域中,类与类之间是有继承关系的,例如Java世界中只需要extends关键字就可以确定这两个类的父子关系,但是在关系数据库的世界中,表与表之间没有任何关键字可以明确指明这两张表的父子关系,表与表是没有继承关系这样的说法的。为了将程序领域中的继承关系反映到数据中,Hibernate为我们提供了3中方案:

第一种方案:一个子类对应一张表。

第二种方案:使用一张表表示所有继承体系下的类的属性的并集。

第三种方案:每个子类使用一张表只存储它特有的属性,然后与父类所对应的表以一对一主键关联的方式关联起来。

现在假设有People、Student、Teacher三个类,父类为People,Student与Teacher为People的父类,代码如下:

People类:

  1. public class People  
  2. {  
  3.     /*父类所拥有的属性*/  
  4.     private String id;  
  5.     private String name;  
  6.     private String sex;  
  7.     private String age;  
  8.     private Timestamp birthday;  
  9.       
  10.     /*get和set方法*/  
  11. }  

Student类:

  1. public class Student extends People  
  2. {  
  3.     /*学生独有的属性*/  
  4.     private String cardId;//学号   
  5.   
  6.     public String getCardId()  
  7.     {  
  8.         return cardId;  
  9.     }  
  10.   
  11.     public void setCardId(String cardId)  
  12.     {  
  13.         this.cardId = cardId;  
  14.     }  
  15. }  

Teacher类:

  1. public class Teacher extends People  
  2. {  
  3.     /*Teacher所独有的属性*/  
  4.     private int salary;//工资   
  5.   
  6.     public int getSalary()  
  7.     {  
  8.         return salary;  
  9.     }  
  10.   
  11.     public void setSalary(int salary)  
  12.     {  
  13.         this.salary = salary;  
  14.     }  
  15. }  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一页

相关内容