Hibernate雙向一對一映射關(guān)系配置代碼實(shí)例
1、外鍵映射
1.1、實(shí)體類
package com.yl.bean; import java.io.Serializable; /** * 公民實(shí)體類 */ public class Person implements Serializable { private Integer id; private String name; private PersonCard card; public Person() { } public Person(Integer id, String name, PersonCard card) { this.id = id; this.name = name; this.card = card; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public PersonCard getCard() { return card; } public void setCard(PersonCard card) { this.card = card; } @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + ", card=" + card + '}'; } }
package com.yl.bean; import java.io.Serializable; /** * 身份證實(shí)體類 */ public class PersonCard implements Serializable { private Integer id; private String cardNo; private Person person; public PersonCard() { } public PersonCard(Integer id, String cardNo, Person person) { this.id = id; this.cardNo = cardNo; this.person = person; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getCardNo() { return cardNo; } public void setCardNo(String cardNo) { this.cardNo = cardNo; } public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } @Override public String toString() { return "PersonCard{" + "id=" + id + ", cardNo='" + cardNo + '\'' + ", person=" + person + '}'; } }
1.2、全局配置文件(hibernate.cfg.xml)
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!--數(shù)據(jù)源配置--> <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate?characterEncoding=utf8&serverTimezone=GMT%2B8</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123456</property> <!--顯示sql--> <property name="hibernate.show_sql">true</property> <!--自動創(chuàng)建表--> <property name="hibernate.hbm2ddl.auto">update</property> <!--指定映射配置文件的位置--> <mapping resource="com/yl/bean/Person.hbm.xml"></mapping> <mapping resource="com/yl/bean/PersonCard.hbm.xml"></mapping> </session-factory> </hibernate-configuration>
1.3、公民映射配置文件(Person.hbm.xml)
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!--配置User類--> <class name="com.yl.bean.Person" table="t_person"> <!--主鍵--> <id name="id" column="id" type="java.lang.Integer"> <!--將主鍵交給本地?cái)?shù)據(jù)庫管理--> <generator class="native"></generator> </id> <property name="name" column="name" type="java.lang.String"></property> <one-to-one name="card" class="com.yl.bean.PersonCard"></one-to-one> </class> </hibernate-mapping>
1.4、身份證映射配置文件(PersonCard.hbm.xml)
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!--配置User類--> <class name="com.yl.bean.PersonCard" table="t_personcard"> <!--主鍵--> <id name="id" column="id" type="java.lang.Integer"> <!--將主鍵交給本地?cái)?shù)據(jù)庫管理--> <generator class="native"></generator> </id> <property name="cardNo" column="cardNo" type="java.lang.String"></property> <many-to-one name="person" column="person_id" unique="true"></many-to-one> </class> </hibernate-mapping>
1.5、測試類
@Test public void test01(){ Person person=new Person(); person.setName("yl001"); PersonCard personCard=new PersonCard(); personCard.setCardNo("001"); person.setCard(personCard); personCard.setPerson(person); Session session= HibernateUtils.getSession(); Transaction transaction=session.beginTransaction(); session.save(person); session.save(personCard); transaction.commit(); session.close(); }
2、主鍵映射
表的字段既是主鍵,又是外鍵(eg:身份證號碼既是主鍵又是外鍵)
2.1、映射配置文件實(shí)現(xiàn)
主要修改PersonCard.hbm.xml文件
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!--配置User類--> <class name="com.yl.bean.PersonCard" table="t_personcard"> <!--主鍵--> <id name="id" column="id" type="java.lang.Integer"> <!--將主鍵交給本地?cái)?shù)據(jù)庫管理--> <generator class="native"></generator> </id> <property name="cardNo" column="cardNo" type="java.lang.String"></property> <!--<many-to-one name="person" column="person_id" unique="true"></many-to-one>--> <one-to-one name="person" class="Person" constrained="true"/> </class> </hibernate-mapping>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Maven 打包項(xiàng)目到私服 (deploy)的配置方法
這篇文章主要介紹了Maven 打包項(xiàng)目到私服 (deploy)的配置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07Java語言實(shí)現(xiàn)非遞歸實(shí)現(xiàn)樹的前中后序遍歷總結(jié)
今天小編就為大家分享一篇關(guān)于Java語言實(shí)現(xiàn)非遞歸實(shí)現(xiàn)樹的前中后序遍歷總結(jié),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01Caused?by:?java.lang.NumberFormatException:?For?input?s
這篇文章主要介紹了Caused?by:?java.lang.NumberFormatException:?For?input?string:?“port“,本文給大家分享完美解決方法,需要的朋友可以參考下2023-01-01SpringBoot3 Spring WebFlux簡介(推薦)
SpringWebFlux是Spring Framework 5中引入的響應(yīng)式Web框架,用于支持非阻塞異步通信和響應(yīng)式流處理,與傳統(tǒng)的SpringMVC相比,WebFlux提供了完全異步非阻塞的編程模型,適用高并發(fā)、微服務(wù)架構(gòu)和實(shí)時數(shù)據(jù)流,本文介紹SpringBoot3 Spring WebFlux簡介,感興趣的朋友一起看看吧2024-10-10解決@Validated注解無效,嵌套對象屬性的@NotBlank無效問題
這篇文章主要介紹了解決@Validated注解無效,嵌套對象屬性的@NotBlank無效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10Java實(shí)現(xiàn)Flappy Bird游戲源碼
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)Flappy Bird游戲源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12