日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(8)hibernate四种继承映射

發布時間:2024/1/23 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (8)hibernate四种继承映射 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一?一個類繼承體系一張表

1 對象模型(java類結構)


2 映射后據庫中的表



3 代碼

Employee.java

package com.learning;public class Employee {private int id;private String name;public Employee() {}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

Sales.java

package com.learning;public class Sales extends Employee{private String sell;public Sales() {}public String getSell() {return sell;}public void setSell(String sell) {this.sell = sell;}}

Skiller.java

package com.learning;public class Skiller extends Employee {private String skill;public Skiller() {}public String getSkill() {return skill;}public void setSkill(String skill) {this.skill = skill;}}

Employee.hbm.xml


<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.learning"><class table="employee" name="Employee" discriminator-value="employee"><id name="id"><generator class="native"/></id><discriminator column="type" type="string"/><property name="name" column="name"/><subclass name="Skiller" discriminator-value="skiller"><property name="skill" /></subclass><subclass name="Sales" discriminator-value="sales"><property name="sell" /></subclass></class></hibernate-mapping>

測試類?

ExtendsOneTest.java

package com.test;import java.util.Date; import java.util.List;import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration;import com.learning.Employee; import com.learning.Sales; import com.learning.Skiller;public class ExtendsOneTest {private SessionFactory sessionFactory;{this.init();}private void init(){Configuration cfg = new Configuration();sessionFactory= cfg.configure().buildSessionFactory();}/*** 公用一張表* */private void test(){Session session = this.sessionFactory.openSession();session.beginTransaction();Employee employee = new Employee();employee.setName("employee name");Skiller skiller = new Skiller();skiller.setName("skiller name");skiller.setSkill("skill");Sales sales = new Sales();sales.setSell("sales name");sales.setSell("sell");session.save(employee);session.save(skiller);session.save(sales);session.getTransaction().commit();session.close();}public static void main(String[] args) {ExtendsOneTest extendsOneTest = new ExtendsOneTest();extendsOneTest.test();}}

數據庫結果



二?每個子類不同的部分用一張表

1 對象模型(java類結構)與上面相同

2 映射后據庫中的表


3 代碼

Employee.java ,Sales.java,Skiller.java與上面相同

Employee.hbm.xml映射文件

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.learning"><class table="employee" name="Employee"><id name="id"><generator class="native"/></id><property name="name" column="name"/><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>

測試類與ExtendsOneTest.java相同

數據庫中結果






三?繼承關系與內連接結合

混合使用”一個類繼承體系一張表”和”每個子類一張表”

1 對象模型(java類結構)與上面相同

2 映射后據庫中的表


3代碼

Employee.java ,Sales.javaSkiller.java與上面一樣

Employee.hbm.xml映射文件

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.learning"><class table="employee" name="Employee" discriminator-value="employee"><id name="id"><generator class="native"/></id><discriminator column="type" type="string"/><property name="name" column="name"/><subclass name="Skiller" discriminator-value="skiller"><property name="skill" /></subclass><subclass name="Sales" discriminator-value="sales"><join table="sales"><key column="emp_id" /><property name="sell" /></join></subclass></class> </hibernate-mapping>

數據庫截圖






四?每個具體類一張表

1 對象模型(java類結構)與上面一樣

2 映射后的結果



3代碼

Employee.java , Sales.javaSkiller.java與上面相同

Employee.hbm.xml

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.learning"><class table="employee" name="Employee" ><id name="id"><generator class="hilo"/></id><property name="name" column="name"/><union-subclass name="Skiller" table="skiller"><property name="skill" /></union-subclass><union-subclass name="Sales" table="sales"><property name="sell" /></union-subclass></class> </hibernate-mapping>

測試類與上面相同

數據庫結果














總結

以上是生活随笔為你收集整理的(8)hibernate四种继承映射的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。