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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Hibernate 双向一对一实现(基于annotation)

發布時間:2025/4/16 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate 双向一对一实现(基于annotation) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.基于(foreign key)外鍵實現

國家<-------->首都

Country.java

?

1 package hibernate.orm.one2one.fk; 2 3 import javax.persistence.Column; 4 import javax.persistence.Entity; 5 import javax.persistence.GeneratedValue; 6 import javax.persistence.Id; 7 import javax.persistence.JoinColumn; 8 import javax.persistence.OneToOne; 9 import javax.persistence.PrimaryKeyJoinColumn; 10 import javax.persistence.Table; 11 12 import org.hibernate.annotations.GenericGenerator; 13 // 主表 14 // 被擁有方 15 @Entity 16 @Table(name = "t_country") 17 public class Country { 18 private Long id; 19 private String name; 20 private Capital capital; 21 22 public Country() { 23 } 24 25 @Id 26 @Column(length=8) 27 @GenericGenerator(name = "ud", strategy = "increment") 28 // 主鍵生成器 29 @GeneratedValue(generator = "ud") 30 public Long getId() { 31 return id; 32 } 33 34 public void setId(Long id) { 35 this.id = id; 36 } 37 38 @Column(length = 20) 39 public String getName() { 40 return name; 41 } 42 43 public void setName(String name) { 44 this.name = name; 45 } 46 @OneToOne(mappedBy="country",optional=true)//一個國家可以沒有首都 47 //表示當前所在表和Capital的關系是定義在Capital里面的country這個成員上面的,它表示此表是一對一關系中的主表 48 public Capital getCapital() { 49 return capital; 50 } 51 52 public void setCapital(Capital capital) { 53 this.capital = capital; 54 } 55 56 }

?Capital.java

1 package hibernate.orm.one2one.fk; 2 3 import javax.persistence.Column; 4 import javax.persistence.Entity; 5 import javax.persistence.GeneratedValue; 6 import javax.persistence.GenerationType; 7 import javax.persistence.Id; 8 import javax.persistence.JoinColumn; 9 import javax.persistence.OneToOne; 10 import javax.persistence.PrimaryKeyJoinColumn; 11 import javax.persistence.Table; 12 13 import org.hibernate.annotations.GenericGenerator; 14 //從表 15 //擁有方 16 @Entity 17 @Table(name = "t_capital") 18 public class Capital { 19 private Long id; 20 private String name; 21 private Country country; 22 23 public Capital() { 24 } 25 26 @Id 27 @Column(length=8) 28 @GenericGenerator(name="ud",strategy="increment") 29 @GeneratedValue(generator="ud") 30 public Long getId() { 31 return id; 32 } 33 34 public void setId(Long id) { 35 this.id = id; 36 } 37 @Column(length=20) 38 public String getName() { 39 return name; 40 } 41 42 public void setName(String name) { 43 this.name = name; 44 } 45 @OneToOne(optional=false)//一個首都必對應一個國家 46 @JoinColumn(name="country_id") 47 public Country getCountry() { 48 return country; 49 } 50 51 public void setCountry(Country country) { 52 this.country = country; 53 } 54 55 }

One2OneTest.java(測試類)

package hibernate.orm.one2one.fk;import hibernate.util.HibernateSessionFactory;import org.hibernate.Session; import org.hibernate.Transaction;public class One2OneTest {public static void main(String[] args) {Session session = HibernateSessionFactory.getSession();Transaction tx = session.beginTransaction();Country country = new Country();country.setName("中國");Capital capital = new Capital();capital.setName("北京");country.setCapital(capital);capital.setCountry(country);//相互建立關聯 session.save(country);session.save(capital);tx.commit();HibernateSessionFactory.closeSession();} }

hibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration><session-factory><property name="dialect">org.hibernate.dialect.Oracle10gDialect</property><property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:xe</property><property name="connection.username">hibernate</property><property name="connection.password">123</property><property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property><!-- <property name="javax.persistence.validation.mode">none</property> --><property name="current_session_context_class">thread</property><property name="show_sql">true</property><property name="format_sql">true</property><property name="hbm2ddl.auto">create</property><!-- 自動建表 --><mapping class="hibernate.orm.one2one.fk.Country"/><mapping class="hibernate.orm.one2one.fk.Capital"/></session-factory> </hibernate-configuration>

-----------------------------------------------------------------------------------------------------------------------------------(我割)

2.基于(primary key)主鍵實現

丈夫<-------->妻子

Husband.java

1 package hibernate.orm.one2one.pk; 2 3 import javax.persistence.Column; 4 import javax.persistence.Entity; 5 import javax.persistence.GeneratedValue; 6 import javax.persistence.Id; 7 import javax.persistence.OneToOne; 8 import javax.persistence.PrimaryKeyJoinColumn; 9 import javax.persistence.Table; 10 11 import org.hibernate.annotations.GenericGenerator; 12 import org.hibernate.annotations.Parameter; 13 14 @Entity 15 @Table(name = "t_husband") 16 public class Husband { 17 private Long id; 18 private String name; 19 private Wife wife; 20 21 @Id 22 @GenericGenerator(name = "ud", strategy = "foreign", parameters = { @Parameter(name = "property", value = "wife") }) 23 @GeneratedValue(generator = "ud") 24 public Long getId() { 25 return id; 26 } 27 28 public void setId(Long id) { 29 this.id = id; 30 } 31 @Column(length=20) 32 public String getName() { 33 return name; 34 } 35 36 public void setName(String name) { 37 this.name = name; 38 } 39 @OneToOne 40 @PrimaryKeyJoinColumn 41 public Wife getWife() { 42 return wife; 43 } 44 45 public void setWife(Wife wife) { 46 this.wife = wife; 47 } 48 49 }

Wife.java

1 package hibernate.orm.one2one.pk; 2 3 import javax.persistence.Column; 4 import javax.persistence.Entity; 5 import javax.persistence.GeneratedValue; 6 import javax.persistence.Id; 7 import javax.persistence.OneToOne; 8 import javax.persistence.Table; 9 10 import org.hibernate.annotations.GenericGenerator; 11 12 @Entity 13 @Table(name = "t_wife") 14 public class Wife { 15 private Long id; 16 private String name; 17 private Husband husband; 18 19 @Id 20 @GenericGenerator(name = "ud", strategy = "increment") 21 @GeneratedValue(generator = "ud") 22 public Long getId() { 23 return id; 24 } 25 26 public void setId(Long id) { 27 this.id = id; 28 } 29 30 @Column(length = 20) 31 public String getName() { 32 return name; 33 } 34 35 public void setName(String name) { 36 this.name = name; 37 } 38 @OneToOne(mappedBy="wife")//表之間的關系由Husband類中的wife屬性維護 39 public Husband getHusband() { 40 return husband; 41 } 42 43 public void setHusband(Husband husband) { 44 this.husband = husband; 45 } 46 47 }

?One2OneTest.java

1 package hibernate.orm.one2one.pk; 2 3 import hibernate.util.HibernateSessionFactory; 4 5 import org.hibernate.Session; 6 import org.hibernate.Transaction; 7 8 public class One2OneTest { 9 public static void main(String[] args) { 10 Session session = HibernateSessionFactory.getSession(); 11 Transaction tx = session.beginTransaction(); 12 Husband husband = new Husband(); 13 husband.setName("陽陽"); 14 Wife wife = new Wife(); 15 wife.setName("原原"); 16 husband.setWife(wife); 17 wife.setHusband(husband);//設置雙向關聯關系 18 session.save(husband); 19 session.save(wife); 20 tx.commit(); 21 HibernateSessionFactory.closeSession(); 22 23 } 24 }

hibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration><session-factory><property name="dialect">org.hibernate.dialect.Oracle10gDialect</property><property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:xe</property><property name="connection.username">hibernate</property><property name="connection.password">123</property><property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property><!-- <property name="javax.persistence.validation.mode">none</property> --><property name="current_session_context_class">thread</property><property name="show_sql">true</property><property name="format_sql">true</property><property name="hbm2ddl.auto">create</property><!-- 自動建表 --><mapping class="hibernate.orm.one2one.pk.Husband"/><mapping class="hibernate.orm.one2one.pk.Wife"/></session-factory> </hibernate-configuration>

?

?

轉載于:https://www.cnblogs.com/wuyulunbi/archive/2012/12/21/hibernate_2.html

總結

以上是生活随笔為你收集整理的Hibernate 双向一对一实现(基于annotation)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 一区二区三区视频在线免费观看 | 黄色一级视频免费看 | 黑丝一区二区三区 | 亚洲国产精品一区二区久久hs | 韩国无码一区二区三区精品 | 欧美日韩视频免费观看 | a毛片| 亚洲最大福利 | 国产精品婷婷午夜在线观看 | 毛片网站入口 | 七七色影院| 亚洲欧美日韩国产一区二区三区 | 欧美v视频 | 免费成人电影在线观看 | 国产精品入口麻豆 | www污网站| 免费黄毛片 | 欧美一区二区三区免费在线观看 | 男人的天堂99 | www.国产精品视频 | 999久久久 | 熟女人妻aⅴ一区二区三区60路 | 午夜电影网一区 | 国产欧美在线 | 国产色综合网 | 亚洲av人无码激艳猛片服务器 | 午夜福利视频 | 久久电影一区二区 | 欧美狠狠操 | 又粗又猛又爽又黄的视频 | 大胸奶汁乳流奶水出来h | a级片免费播放 | 男人疯狂高潮呻吟视频 | 美日韩av在线 | 欧美成人精品网站 | 中文字幕一区二区三区门四区五区 | 人人妻人人爽人人澡人人精品 | 农村搞破鞋视频大全 | 六月天综合网 | av在线播放中文字幕 | 日本不卡在线 | 91挑色| 午夜精品一区二区三区在线观看 | 香蕉视频在线观看www | 欧美久久精品一级黑人c片 1000部多毛熟女毛茸茸 | 亚洲精品免费观看 | 桃色av| 日本xxxx人| 99伊人| 小镇姑娘高清播放视频 | 在线免费亚洲 | 放荡闺蜜高h季红豆h | 69热在线| 波多野结衣办公室33分钟 | 久久精品屋 | 精品少妇人妻av一区二区三区 | 欧美在线观看视频一区 | 已满18岁免费观看电视连续剧 | 日韩av一区二区三区四区 | 国产精品无遮挡 | 日韩精品一区二区三区高清免费 | 国产精品77777 | 国产又粗又长又硬免费视频 | 特大黑人巨交吊性xxxxhd | 久久免费播放视频 | 久草欧美 | 色播放 | 亚洲九九| 韩日精品在线 | 新版天堂资源中文8在线 | 亚洲天堂欧美在线 | 四虎av在线播放 | 69色视频 | 国产精品一线二线三线 | 污污网站免费在线观看 | 成人区视频 | 欧美日韩视频在线观看免费 | 欧美成人一区二区 | 日韩亚洲欧美在线观看 | 亚洲免费网站 | 在线观看毛片av | 国产精品不卡一区 | av导航网 | 免费看a毛片| 久久99在线 | 91精品久久久久久久久久入口 | 色七七桃花综合影院 | 波多野结衣中文字幕一区二区三区 | 国产精品对白刺激久久久 | 自拍偷拍视频在线 | 人妖天堂狠狠ts人妖天堂狠狠 | 人人澡人人添 | 91精品国产91久久久久久吃药 | 国产精品免费一区二区三区 | 欧美一区二区免费 | 欧美乱人伦| 男女污污网站 | 国产99在线 | 亚洲 | av九九九 |