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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Hibernate一对一关联------主键关联(亲测成功)

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate一对一关联------主键关联(亲测成功) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

1、創建兩個實體(Company.java和Login.java)代碼如下:

1 package wck.stu.vo.onetoonein; 2 3 public class Company { 4 private String id = ""; 5 6 private String companyName = ""; 7 8 private String linkman = ""; 9 10 private String telephone = ""; 11 12 private String email = ""; 13 14 private Login login; 15 16 public String getId() { 17 return id; 18 } 19 20 public void setId(String id) { 21 this.id = id; 22 } 23 24 public String getCompanyName() { 25 return companyName; 26 } 27 28 public void setCompanyName(String companyName) { 29 this.companyName = companyName; 30 } 31 32 public String getLinkman() { 33 return linkman; 34 } 35 36 public void setLinkman(String linkman) { 37 this.linkman = linkman; 38 } 39 40 public String getTelephone() { 41 return telephone; 42 } 43 44 public void setTelephone(String telephone) { 45 this.telephone = telephone; 46 } 47 48 public String getEmail() { 49 return email; 50 } 51 52 public void setEmail(String email) { 53 this.email = email; 54 } 55 56 public Login getLogin() { 57 return login; 58 } 59 60 public void setLogin(Login login) { 61 this.login = login; 62 } 63 } Company.java 1 package wck.stu.vo.onetoonein; 2 3 public class Login { 4 private String id = ""; 5 6 private String loginName = ""; 7 8 private String loginPwd = ""; 9 10 private Company company; 11 12 public String getId() { 13 return id; 14 } 15 16 public void setId(String id) { 17 this.id = id; 18 } 19 20 public String getLoginName() { 21 return loginName; 22 } 23 24 public void setLoginName(String loginName) { 25 this.loginName = loginName; 26 } 27 28 public String getLoginPwd() { 29 return loginPwd; 30 } 31 32 public void setLoginPwd(String loginPwd) { 33 this.loginPwd = loginPwd; 34 } 35 36 public Company getCompany() { 37 return company; 38 } 39 40 public void setCompany(Company company) { 41 this.company = company; 42 } 43 } Login.java

?

  2、創建配置文件(Company.hbm.xml和Login.hbm.xml)代碼如下:

1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5 <hibernate-mapping> 6 <class name="wck.stu.vo.onetoonein.Company" table="COMPANY"> 7 <id name="id" type="java.lang.String"> 8 <column name="C_ID" length="32" not-null="true"></column> 9 <generator class="uuid.hex"></generator> 10 </id> 11 <property name="companyName" type="java.lang.String"> 12 <column name="C_COMPANYNAME" length="17"></column> 13 </property> 14 <property name="linkman" type="java.lang.String"> 15 <column name="C_LIKEMAN" length="17"></column> 16 </property> 17 <property name="telephone" type="java.lang.String"> 18 <column name="C_TELEPHONE" length="17"></column> 19 </property> 20 <property name="email" type="java.lang.String"> 21 <column name="C_EMAIL" length="170"></column> 22 </property> 23 <one-to-one name="login" class="wck.stu.vo.onetoonein.Login" cascade="all" fetch="join" outer-join="true" lazy="false"/> 24 </class> 25 </hibernate-mapping> Company.hbm.xml

注:<class>元素的lazy屬性設定為true,表示延遲加載,如果lazy的值設置為false,則表示立即加載,下面對立即加載和延遲加載這兩種概念進行說明。

(1)立即加載:表示Hibernate在從數據庫中取得數據組裝好一個對象(比如會員1)后,會立即再從數據庫取得數據組裝此對象所關聯的對象(例如,登錄帳號1)。

(2)延遲加載:表示Hibernate在從數據庫中取得數據組裝好一個對象(比如會員1)后,不會立即再從數據庫取得數據組裝此對象所關聯的對象(例如,登錄帳號1),而是等到需要時,才會從數據庫取得數據組裝此關聯對象。

<one-to-one>元素的cascade屬性標碼操作是否 從父對象級聯到被關聯的對象all:所有情況下均進行級聯操作,即包括save-update和delete操作。

<one-to-one>元素的fetch屬性的可選值是join和select,默認值是select。當fetch屬性設定為join時,表示鏈接抓取(Join?Fetching):Hibernate通過在select語句中使用Outerjoin(外連接)來獲得對象的關聯實例或者關聯集合。當fecth屬性設定為select時,表示查詢抓取(Select Fetching):需要另外發送一條select語句抓取當前對象的關聯實體或集合。

1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5 <hibernate-mapping> 6 <class name="wck.stu.vo.onetoonein.Login" table="LOGIN"> 7 <id name="id" type="java.lang.String" column="C_ID"> 8 <generator class="foreign"> 9 <param name="property">company</param> 10 </generator> 11 </id> 12 <property name="loginName" type="java.lang.String"> 13 <column name="C_LOGINNAME" length="17"></column> 14 </property> 15 <property name="loginPwd" type="java.lang.String"> 16 <column name="C_LOGINPWD" length="17"></column> 17 </property> 18 <one-to-one name="company" class="wck.stu.vo.onetoonein.Company" constrained="true"/> 19 </class> 20 </hibernate-mapping> Login.hbm.xml

注:Login.hbm.xml的主鍵id使用的外鍵生成機制(foreign),引用表company的主鍵作為login表的主鍵值,company在該映射文件的<one-to-one>元素的屬性constrained="true"表示Login引用了company的主鍵作為外鍵。

  3、測試代碼

1 public String saveInfo() { 2 Company company = new Company(); 3 Login login = new Login(); 4 login.setLoginName("QQ"); 5 login.setLoginPwd("123"); 6 company.setCompanyName("清華大學出版社"); 7 company.setLinkman("白立軍"); 8 company.setTelephone("010-60772015"); 9 company.setEmail("bailj@163.com"); 10 //PO對象之間相互設置關聯關系 11 login.setCompany(company); 12 company.setLogin(login); 13 return onettooneDaoImpl.saveInfo(company); 14 }

?實現多個表之間的主鍵一對一關系的時候只需要在主表(例如:Company.hbm.xml)中加入

?<one-to-one name="login1" class="wck.stu.vo.onetoonein.Login1" cascade="all" fetch="join" outer-join="true" lazy="false"/>

其它一樣,在保存的時候一定記得需要相互賦值例如:

1 public String saveInfo() { 2 Company company = new Company(); 3 Login login = new Login(); 4 login.setLoginName("QQ"); 5 login.setLoginPwd("123"); 6 Login1 login1 = new Login1(); 7 login1.setLoginName("QQ"); 8 login1.setLoginPwd("123"); 9 company.setCompanyName("清華大學出版社"); 10 company.setLinkman("白立軍"); 11 company.setTelephone("010-60772015"); 12 company.setEmail("bailj@163.com"); 13 //PO對象之間相互設置關聯關,注意這如果是多個表都需要相互賦值 14 login.setCompany(company); 15 login1.setCompany(company); 16 company.setLogin(login); 17 company.setLogin1(login1); 18 return onettooneDaoImpl.saveInfo(company); 19 }

?

轉載于:https://www.cnblogs.com/wck1988/p/3486934.html

總結

以上是生活随笔為你收集整理的Hibernate一对一关联------主键关联(亲测成功)的全部內容,希望文章能夠幫你解決所遇到的問題。

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