`

Hibernate 一对一关联

阅读更多

Student(学生)和Document(学籍)存在一对一关系

 

Student.java

 

/**
 * 
 */
package com.hb.jo;

/**
 * @author dudong0726
 *
 * @date 2011-11-8 下午04:36:25
 *
 */
public class Student {

	private long id;
	private String name;
	private String email;
	private Document doc;
	
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Document getDoc() {
		return doc;
	}
	public void setDoc(Document doc) {
		this.doc = doc;
	}
	
}

 

Document.java

 

/**
 * 
 */
package com.hb.jo;

/**
 * @author dudong0726
 *
 * @date 2011-11-8 下午04:37:19
 *
 */
public class Document {

	private long id;
	private String number; 
	private Student stu;
	
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getNumber() {
		return number;
	}
	public void setNumber(String number) {
		this.number = number;
	}
	public Student getStu() {
		return stu;
	}
	public void setStu(Student stu) {
		this.stu = stu;
	}
	
	
}

 

student.hbm.xml

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="com.hb.jo.Student" table="student">
		<id name="id" column="stu_id">
			<generator class="foreign">
				<param name="property">doc</param>
			</generator>
		</id>
		<property name="name"></property>
		<property name="email"></property>
		<one-to-one name="doc" class="com.hb.jo.Document" constrained="true"></one-to-one>
	</class>
</hibernate-mapping>

 

document.hbm.xml

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="com.hb.jo.Document" table="document">
		<id name="id" column="doc_id">
			<generator class="native"></generator>
		</id>
		<property name="number"></property>
		<one-to-one name="stu" class="com.hb.jo.Student"></one-to-one>
	</class>
</hibernate-mapping>

 

 

需要注意的地方:

 

1、为保证两个关联的表中id的一致,需要在其中一个表中的id作为外键,其生成策略使用和他关联表的id;

 

2、需要在有外键的表中指定 constrained = 'true',来明确指定通过外键对主键进行关联;此字段影响save和delete的先后顺序,因为其id生成需要与其关联表的主键,所以每次save先save关联的表,在查询关联表的id作为id;在删除时和save相反。

 

分享到:
评论

相关推荐

    hibernate一对一关联关系

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

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

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

    hibernate一对一关联映射

    **标题:** Hibernate一对一关联映射 **描述:** 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。一对一(OneToOne)关联映射是Hibernate提供的一种对象关系映射策略,它...

    Hibernate 一对一关联查询.docx

    综上所述,基于外键的一对一关联在Hibernate中是通过在实体类中定义引用以及在映射文件中设置外键映射来实现的。这种关联关系提供了灵活性,但也需要注意维护关联的正确性和性能优化。在实际开发中,应根据业务需求...

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

    通过阅读文章并参考提供的`hibernate_test`压缩包中的示例代码,你可以更深入地理解这两种一对一关联映射方法,并在项目中灵活运用。同时,学习源码可以帮助你更好地理解Hibernate如何处理这些关联,从而提升你的...

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

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

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

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

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

    Hibernate一对一关联概述 一对一关联分为两种类型:共享主键关联(Primary Key Join)和唯一外键关联(Unique Foreign Key Join)。在本例中,我们讨论的是后者,即通过一个独立的外键字段在两个表之间建立一对一...

    hibernate外键实现一对一单向关联关系源码

    **一对一关联关系**在数据库设计中表示两个表之间存在唯一的对应关系,例如,一个人可能只有一个护照,或者一个员工只有一个职位。在Hibernate中,这种关系可以通过外键(Foreign Key)在一方或双方实体中实现。 **...

    Hibernate 一对一

    **标题:“Hibernate 一对一”** 在Java开发中,Hibernate是一个非常流行的对象关系...阅读博文(https://chaoyi.iteye.com/blog/2150870)可获取更深入的解释和示例代码,进一步提升对Hibernate一对一关联的理解。

    hibernate一对一

    **hibernate一对一关联详解** 在Java开发中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,将Java对象与数据库表之间的映射关系自动化处理。在实际项目中,我们常常会遇到实体类之间的...

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

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

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

    - **唯一性约束**:在数据库层面,为了确保一对一关联,通常需要添加唯一性约束。例如,`IdCard`表的`person_id`列应具有唯一性约束。 以上就是关于Hibernate中一对一主键关联映射(单项关联)的详细解释。通过这种...

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

    标题"Hibernate一对一主键关联映射(双向关联)"中的"主键关联"指的是两个实体通过共享相同的主键来建立关联。"双向关联"则意味着在两个实体类中,都可以直接访问到对方的实例,即在实体A中有一个对实体B的引用,...

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

    一对一关联通常出现在两个实体之间存在唯一对应关系的情况,例如一个人只有一个身份证。在Hibernate中,可以通过在实体类的属性上使用`@OneToOne`注解来定义这种关系。此外,还需要通过`@PrimaryKeyJoinColumn`或`@...

    hibernate一对一之唯一外键关联(双向关联)

    - 虽然一对一关联提供了便利,但过多的一对一关联可能会影响性能,因为每次查询可能涉及多个表,增加数据库访问的复杂性。因此,应谨慎设计实体间的关系。 8. **实例应用** - 在实际项目中,一对一关联常用于用户...

    hibernate使用主键关联的一对一关系

    在Java的持久化框架Hibernate中,一对一(OneToOne)关系是一种常见的对象关系映射(ORM)配置,用于表示两个实体类之间的一种唯一关联。在这个场景中,“hibernate使用主键关联的一对一关系”指的是通过共享主键来...

    hibernate关联映射详解

    包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。

Global site tag (gtag.js) - Google Analytics