如何配置Hibernate中实现双向一对一映射关系的代码示例?

2026-05-15 23:491阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1078个文字,预计阅读时间需要5分钟。

如何配置Hibernate中实现双向一对一映射关系的代码示例?

1. 外键映射+1.1. 实体类 + package com.yl.bean; + import java.io.Serializable; /* + + 公共实体类 + + */ + 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; + } + // Getters and Setters + 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; + } + }

1、外键映射

1.1、实体类

如何配置Hibernate中实现双向一对一映射关系的代码示例?

package com.yl.bean; import java.io.Serializable; /** * 公民实体类 */ 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; /** * 身份证实体类 */ 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" "hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!--数据源配置--> <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate?characterEncoding=utf8&amp;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> <!--自动创建表--> <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" "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"> <!--将主键交给本地数据库管理--> <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" "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"> <!--将主键交给本地数据库管理--> <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、映射配置文件实现

主要修改PersonCard.hbm.xml文件

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "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"> <!--将主键交给本地数据库管理--> <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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计1078个文字,预计阅读时间需要5分钟。

如何配置Hibernate中实现双向一对一映射关系的代码示例?

1. 外键映射+1.1. 实体类 + package com.yl.bean; + import java.io.Serializable; /* + + 公共实体类 + + */ + 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; + } + // Getters and Setters + 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; + } + }

1、外键映射

1.1、实体类

如何配置Hibernate中实现双向一对一映射关系的代码示例?

package com.yl.bean; import java.io.Serializable; /** * 公民实体类 */ 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; /** * 身份证实体类 */ 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" "hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!--数据源配置--> <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate?characterEncoding=utf8&amp;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> <!--自动创建表--> <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" "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"> <!--将主键交给本地数据库管理--> <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" "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"> <!--将主键交给本地数据库管理--> <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、映射配置文件实现

主要修改PersonCard.hbm.xml文件

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "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"> <!--将主键交给本地数据库管理--> <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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。