`
chaoyi
  • 浏览: 306334 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate 一对一(OneToOne)

 
阅读更多

例子:人与身份证的一对一

人实体类

package entity;

/*
 * Person 实体类
 * */
public class Person {
	private int id;//编号
	private String name;//姓名
	private IdCard idCard;

	public Person() {
	}
	
	public Person(String name) {
		this.name = name;
	}
	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;
	}
	public IdCard getIdCard() {
		return idCard;
	}
	public void setIdCard(IdCard idCard) {
		this.idCard = idCard;
	}
}

 

人实体类的XML配置

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="entity.Person">
		<id name="id">
			<generator class="sequence">
				<param name="sequence">seq_person</param>
			</generator>
		</id>
		<property name="name" />
		<one-to-one name="idCard" class="entity.IdCard"  />
	</class>
</hibernate-mapping>

 

身份证实体类

package entity;

/*
 * Person 实体类
 * */
public class IdCard {
	private int id;//编号
	private String name;//姓名
	private Person person;
	
	public IdCard(String name) {
		super();
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public IdCard() {
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public Person getPerson() {
		return person;
	}
	public void setPerson(Person person) {
		this.person = person;
	}
}

 

身份证实体类的XML配置

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="entity.IdCard">
		<id name="id">
			<generator class="foreign">
				<param name="property">person</param>
			</generator>
		</id>
		<property name="name" />
		<one-to-one name="person" class="entity.Person" constrained="true"/>
	</class>
</hibernate-mapping>

 

使用hibernate.cfg.xml映射其的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>
	<!-- 数据库URL -->
	<property name="connection.url">
		jdbc:oracle:thin:@localhost:1521:oracle11
	</property>
	<!-- 数据库用户 -->
	<property name="connection.username">A_hr</property>
	<!-- 数据库用户密码 -->
	<property name="connection.password">123456</property>
	<!-- 数据库 JDBC 驱动 -->
	<property name="connection.driver_class">
		oracle.jdbc.driver.OracleDriver
	</property>
	<!-- 是否将运行期生成的 SQL 输出到日志以供调试 -->
	<property name="show_sql">true</property>
	<!-- 每个数据库都有其对应的 Dialect 以匹配其平台特征 -->
	<property name="dialect">
		org.hibernate.dialect.Oracle10gDialect
	</property>
	<property name="hbm2ddl.auto">create</property>
	<mapping resource="entity/IdCard.hbm.xml" />
	<mapping resource="entity/Person.hbm.xml" />
</session-factory>
</hibernate-configuration>

 

进行数据的操作

package test;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

import entity.IdCard;
import entity.Person;

import util.HibernateSessionFactory;

public class OneToOneTest {
	public static void main(String[] args) {
		oneToOne();
	}

	private static void oneToOne() {
		Session session = HibernateSessionFactory.getSession();
		Transaction tx = null;
		Person person = new Person("李炎恢");
		IdCard idCard = new IdCard("123456");
		try {
			person.setIdCard(idCard);
			idCard.setPerson(person);
			tx = session.beginTransaction();
			session.save(person);
			session.save(idCard);
			tx.commit();
			System.out.println("保存成功!!!");
		} catch (HibernateException e) {
			e.printStackTrace();
			tx.rollback();
		}finally{
			HibernateSessionFactory.closeSession();
		}
	}
}

 

效果图:

 

在数据库查询这两条语句

select id, name from person;
select id, name from idcard

 

 

 

 

 

  • 大小: 54.4 KB
  • 大小: 9.2 KB
  • 大小: 9.2 KB
分享到:
评论

相关推荐

    hibernate_onetoone实例

    【标题】:“Hibernate一对一实例” 在Java开发中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作。在这个“Hibernate一对一实例”中,我们将深入探讨如何使用Hibernate来实现对象与...

    hibernate框架一对一测试案例

    本篇我们将深入探讨Hibernate中的一对一(OneToOne)关联映射,并通过一个具体的测试案例进行解析。 ### 1. 一对一关联概念 一对一关联是指两个实体类之间存在唯一的对应关系,即一个实体对应另一个实体的一个实例...

    hibernate one to one一对一关系示例

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联是对象关系映射(ORM)中的一个重要概念。这种关联关系意味着一个实体最多只能与另一个实体的实例进行关联,反之亦然。本示例将深入讲解如何在Hibernate中...

    hibernate一对一实例

    在这个“hibernate一对一实例”中,我们将深入探讨如何在Hibernate中实现一对一的映射,并通过具体的代码示例来帮助理解。 一、一对一关联的概念 一对一关联意味着一个实体只与另一个实体的一个实例相关联,反之...

    hibernate一对一关联关系

    本资源主要探讨的是“hibernate一对一关联关系”。 一对一关联关系在现实世界中很常见,比如一个人只有一个身份证,或者一个公司的总部只有一个。在Hibernate中,设置一对一关联关系可以帮助我们更好地管理和操作...

    Hibernate一对一,一对多,多对多实例

    本实例将深入探讨Hibernate中的三种基本关联关系:一对一(One-to-One)、一对多(One-to-Many)以及多对多(Many-to-Many)的实现方式。 1. **一对一关联**: 一对一关联通常出现在两个实体之间存在唯一对应关系...

    hibernate一对一的关系

    在Java持久化框架Hibernate中,一对一(One-to-One)关系是一种常见的对象关系映射(ORM)配置,它用于表示两个实体之间的一种特殊关联,其中每个实体最多只能与另一个实体的一个实例相关联。这种关系在数据库层面...

    hibernate一对一的两种实现方式

    在Hibernate中,一对一关联的实现主要依赖于`org.hibernate.mapping.OneToOne`和`org.hibernate.cfg.Ejb3JoinColumn`这两个类。`OneToOne`类负责存储一对一关联的信息,而`Ejb3JoinColumn`处理外键列的细节。在执行...

    Hibernate双向一对一关联映射(注解版)

    本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...

    Hibernate一对一唯一外键关联映射(单向关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的...以上就是关于Hibernate一对一唯一外键关联映射(单向关联)的详细说明。通过这种方式,我们可以轻松地在Java应用中处理数据库的一对一关系。

    Hibernate一对一唯一外键关联映射(双向关联)

    一、Hibernate一对一关联类型 一对一关联在现实世界中很常见,例如一个人只有一个身份证,一个身份证也只能属于一个人。在数据库设计中,这种关系通常通过主键和外键的方式实现,其中一方的主键作为另一方的外键,...

    Hibernate关于注解的一对多,多对多,一对一

    本篇文章将深入探讨Hibernate中注解的一对多、多对多和一对一关系映射。 ### 一对多关系 在现实生活中,例如一个班级有一个班主任,而班主任可以管理多个学生,这就是典型的“一对多”关系。在Hibernate中,我们...

    详解Hibernate一对一映射配置

    在Java持久化框架Hibernate中,一对一(One-to-One)映射是对象关系映射的一种常见方式,用于表示两个实体之间一对一的关系。这种关系通常出现在一个实体的实例只能与另一个实体的单个实例相关联的情况。下面我们将...

    hibernate一对一主键关联映射(单项关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系数据库模型。本篇将深入探讨在Hibernate中实现一对一主键关联映射的单项关联方式。这种关联意味着两个实体类共享相同的主键,即一个...

    Hibernate 一对一外键单向关联

    在Hibernate中,一对一(One-to-One)映射是一种常见的关联关系,它表示两个实体之间存在一对一的对应关系。本篇文章将深入探讨Hibernate中的一对一外键单向关联。 首先,一对一外键关联指的是一个实体通过外键直接...

    Hibernate一对一关联映射(注解)

    ### Hibernate一对一关联映射原理 一对一关联映射是指在数据库中两个表之间存在一对一的关系,例如,一个人只有一个身份证,一个身份证也只属于一个人。在Hibernate中,我们可以通过@OneToOne注解来实现这种映射。 ...

    Hibernate 一对一关联映射(主键关联VS唯一外键关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系数据库模型。这篇文章将深入探讨两种主要的一对一关联映射方式:主键关联(Primary Key Join)和唯一外键关联(Foreign Key Join)。我们...

    Hibernate一对一

    **标题:“Hibernate一对一”** **描述:** 这篇文章主要探讨了Hibernate框架中的一对一关系映射,这是一种在数据库设计中常见的关联方式。作者通过在博客中分享,详细讲解了如何在Java应用程序中使用Hibernate实现...

    Hibernate一对一主键关联映射(单向关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系映射方式之一,尤其在处理两个实体之间存在唯一对应关系时非常有用。本篇将重点讲解如何实现一对一主键关联映射的单向关联,并通过一个...

Global site tag (gtag.js) - Google Analytics