参考资料:
Hibernate系列:映射一对一主键双向关联
http://blog.csdn.net/igoder/archive/2009/06/23/4292166.aspx
Hibernate一对一主键双向关联映射(Annotation配置)
http://www.blogjava.net/sxyx2008/archive/2010/10/14/335093.html
Hibernate 一对一主键双向关联
一 环境:W7+Eclipse3.6+JDK1.6+MySQL
二 所用Hibernate版本:hibernate-distribution-3.6.0
三 具体代码
hibernate一对一双向指的是2个对象都可以互相的调用,双向的配置可以方便我们调用对象。比如知道A对象就可以使用B对象,可以调用B对象就可以使用A对象。
Hibernate映射一对一双向关联总结: 只需对有外键一方的xml文件设置constrained="true"即可。
若操作涉及到映射关系双方的数据,以操作没有外键一方的对象为主(因为有级联);
若操作只涉及到有外键的一方,则只操作这一方对象即可。
1 Annotations版本
主导对象
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
@Entity
public class A {
private int id;
private String name;
private B b;
@Id
@GeneratedValue
public int getId() {
return id;
}
public String getName() {
return name;
}
@OneToOne
@PrimaryKeyJoinColumn
public B getB() {
return b;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setB(B b) {
this.b = b;
}
}
被参考对象
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
@Entity
public class B{
private int id;
private String name;
private A a ;
@OneToOne
@PrimaryKeyJoinColumn
public A getA() {
return a;
}
public void setA(A a) {
this.a = a;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
XML版本
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
<class name="org.hibernate.model.A">
<id name="id" column="id">
<!-- <generator class="native"/> -->
<!-- class="foreign": 一对一主键映射中,使用另外一个相关联的对象的标识符 -->
<generator class="foreign">
<param name="property">b</param>
</generator>
</id>
<property name="name"/>
<!-- 表示在B表存在一个外键约束,外键参考相关联的表person -->
<one-to-one name="b" constrained="true"></one-to-one>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
<class name="org.hibernate.model.B">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="name"/>
<one-to-one name="a" property-ref="b"></one-to-one>
</class>
</hibernate-mapping>
SQL
create table A (
id integer not null auto_increment,
name varchar(255),
bId integer unique,
primary key (id)
)
create table B (
id integer not null auto_increment,
name varchar(255),
primary key (id)
)
alter table A
add index FK418DB1FDB2 (id),
add constraint FK418DB1FDB2
foreign key (id)
references B (id)
分享到:
相关推荐
标题"Hibernate一对一主键关联映射(双向关联)"中的"主键关联"指的是两个实体通过共享相同的主键来建立关联。"双向关联"则意味着在两个实体类中,都可以直接访问到对方的实例,即在实体A中有一个对实体B的引用,...
在本教程中,我们将深入探讨Hibernate中的一个关键概念——关系映射,特别是“一对一双向主键关联”。这种关联类型是数据库设计中的常见模式,它允许两个实体类之间通过共享相同的主键来建立关联。在Java应用中,...
在Java持久化框架Hibernate中,双向一对一(OneToOne)基于主键的关联映射是一种常见的对象关系映射(ORM)技术。这种映射方式允许两个实体类之间建立一对一的关联,且关联是通过主键来实现的。接下来,我们将深入...
本文将详细讲解“Hibernate Annotation 中的共享主键一对一双向关联”。 首先,我们需要理解什么是共享主键(Shared Primary Key)。在一对一的关联关系中,如果两个实体共享同一个主键,那么这种关联被称为共享...
在实际开发中,使用IDEA等集成开发环境可以自动生成一对一双向关联的实体类和映射文件,方便快捷。同时,通过数据库管理工具如MySQL Workbench,可以直观地查看表结构和外键约束,帮助理解一对一关联的实际效果。 ...
在Java的持久化框架...总结来说,Hibernate的一对一主键关联映射,尤其是双向关联,能有效地简化对象关系的映射,提高代码的可读性和维护性。然而,需要根据实际情况权衡其带来的性能影响,确保系统设计的高效性。
本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...
本主题将深入探讨如何使用Hibernate实现一对一双向关联关系,并通过源码解析这一过程。 一对一双向关联关系指的是两个实体类之间存在一对一的关系,且在各自的类中都可以直接访问对方。这种关联可以通过注解或XML...
本教程将详细解释如何通过代码实现Hibernate的一对一主键关联。 首先,我们需要理解一对一关联的含义:在数据库中,如果一个表的记录只能与另一个表的唯一一条记录对应,这就构成了主键关联的一对一关系。例如,一...
在Hibernate中,一对一的主键关联关系可以通过以下几种方式配置: 1. **注解配置**: 使用`@OneToOne`注解来声明一对一关系,同时通过`@PrimaryKeyJoinColumn`注解指定共享的主键列。例如: ```java @Entity ...
一、Hibernate一对一关联类型 一对一关联在现实世界中很常见,例如一个人只有一个身份证,一个身份证也只能属于一个人。在数据库设计中,这种关系通常通过主键和外键的方式实现,其中一方的主键作为另一方的外键,...
总结来说,Hibernate中的一对一主键关联映射允许两个实体共享同一个主键,实现单向关联时只需在依赖方添加对另一方的引用。在实际应用中,应根据业务需求谨慎选择关联类型,以确保数据的完整性和一致性。
本知识点主要讲解的是使用Hibernate实现一对一主键关联(Primary Key Join)的方式,通过注解进行配置。 一对一的关联在数据库设计中并不常见,但当两个实体之间确实存在一对一的关系时,如用户和其个人资料,这种...
本主题将深入探讨如何使用Hibernate通过主键来实现一对一的单向关联关系,并提供相关的源码分析。 首先,我们需要理解一对一关联关系的基本概念。在数据库中,一对一关系意味着两个表中的每一条记录都对应另一表中...
本资源主要探讨的是“hibernate一对一关联关系”。 一对一关联关系在现实世界中很常见,比如一个人只有一个身份证,或者一个公司的总部只有一个。在Hibernate中,设置一对一关联关系可以帮助我们更好地管理和操作...
在Java持久化框架Hibernate中,一对一双向关联是一种常见的实体关系映射,它反映了数据库中的两个表之间一对一的对应关系。这种关联关系可以是单向的,也可以是双向的,而这里的"hibernate关联关系之一对一双向关联...
本篇主要探讨的是Hibernate中的一对一(OneToOne)关系映射,特别是唯一外键关联(UniDirectional and Bidirectional Association)的情况。我们将深入理解这种关联方式的配置、实现以及它在实际应用中的价值。 1. ...
总结来说,Hibernate中的双向关联映射是对象关系映射的重要组成部分,包括双向多对多、双向一对多和双向一对一。理解并熟练运用这些映射方式,有助于开发者更好地实现Java应用程序与数据库间的交互,提高开发效率和...
本文主要探讨的是Hibernate中的两种关联关系:多对一单向关联和多对一双向关联。通过理解这两种关联方式,我们可以更好地设计和实现复杂的数据库模型。 首先,我们来看**多对一单向关联**。这种关联意味着一个实体...