在面向對象的程序領域中,類與類之間是有繼承關系的,例如Java世界中只需要extends關鍵字就可以確定這兩個類的父子關系,但是在關系數據庫的世界中,表與表之間沒有任何關鍵字可以明確指明這兩張表的父子關系,表與表是沒有繼承關系這樣的說法的。為了將程序領域中的繼承關系反映到數據中,Hibernate為我們提供了3中方案:
第一種方案:一個子類對應一張表。
第二種方案:使用一張表表示所有繼承體系下的類的屬性的並集。
第三種方案:每個子類使用一張表只存儲它特有的屬性,然後與父類所對應的表以一對一主鍵關聯的方式關聯起來。
現在假設有People、Student、Teacher三個類,父類為People,Student與Teacher為People的父類,代碼如下:
People類:
- public class People
- {
- /*父類所擁有的屬性*/
- private String id;
- private String name;
- private String sex;
- private String age;
- private Timestamp birthday;
-
- /*get和set方法*/
- }
Student類:
- public class Student extends People
- {
- /*學生獨有的屬性*/
- private String cardId;//學號
-
- public String getCardId()
- {
- return cardId;
- }
-
- public void setCardId(String cardId)
- {
- this.cardId = cardId;
- }
- }
Teacher類:
- public class Teacher extends People
- {
- /*Teacher所獨有的屬性*/
- private int salary;//工資
-
- public int getSalary()
- {
- return salary;
- }
-
- public void setSalary(int salary)
- {
- this.salary = salary;
- }
- }