hibernate4之一对一关系映射(二)

示例:一个用户(user) 住一个地址(address),一个地址有一个用户。

public class User{
    private Integer id;  
    private String name;
    private Address address;  
    //getter and setter  
}
public class Address {
    private Integer id;
    private String addressName;
    private User user;
    //getter and setter
}

用XML映射

<hibernate-mapping package="com.shen.hibernate4.entity">
	<class name="User" table="tb_user">
		<id name="id">
			<generator class="identity" />
		</id>
		<property name="name" />
		<!--用外键来完成一对一关联,限制多方最多只能有一条记录参考到一方,这是多对一的一个特列。所以设置 many-to-one 的 unique 的属性为 true -->
		<many-to-one name="address" class="Address" column="address_id" unique="true"/>
	</class>
</hibernate-mapping>

<hibernate-mapping package="com.shen.hibernate4.entity">
	<class name="Address" table="tb_address">
		<id name="id">
			<generator class="identity"/>
		</id>
		<property name="addressName" column="address_name"/>
		<!-- property-ref 属性 指定引用关联类的属性 -->
		<one-to-one name="user" class="User" property-ref="address" />
	</class>
</hibernate-mapping>

用@Annotation映射

@Entity  
@Table(name = "tb_user") 
public class User{

    @Id  
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;  
    private String name;
    
    @OneToOne  
    @JoinColumn(name = "address_id", unique = true)
    private Address address;  
    //getter and setter  
}

@Entity  
@Table(name = "tb_address")  
public class Address {

    @Id  
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String addressName;
    
    @OneToOne(mappedBy = "address")
    private User user;
    //getter and setter
}
时间: 2024-10-22 08:11:52

hibernate4之一对一关系映射(二)的相关文章

Hibernate多表关系配置——一对一关系映射

两个对象之间是一对一的关系,如Person-IdCard 有两种策略可以实现一对一的关联映射 主键关联:即让两个对象具有相同的主键值,以表明它们之间的一一对应的关系:数据库表不会有额外的字段来维护它们之间的关系,仅通过表的主键来关联 唯一外键关联 外键关联,本来是用于多对一的配置,但是如果加上唯一的限制之后,也可以用来表示一对一关联关系: 1.实体对象 1.1 Person实体对象 package demo.entity; /** * 人实体 * @author Don * @date:日期:2

Hibernate One-to-One Mappings 一对一关系映射

Hibernate One-to-One Mappings 一对一关系映射 关键:一对一关系映射和多对一关系映射很像,只是unique 属性值为 true 例子:一个员工只能有一个地址. Hibernate框架的使用步骤: 1.创建Hibernate的配置文件(hibernate.cfg.xml) 2.创建持久化类,即其实例需要保存到数据库中的类(Employee.java) 3.创建对象-关系映射文件(Employee.hbm.xml) 4.通过Hibernate API编写访问数据库的代码

mybatis中一对一关系映射

一对一关系中普通的配置方式 一.多表连接查询语句: <select id="selectStudentWithAddress" parameterType="int" resultMap="StudentWithAddressResult"> select s.stud_id, s.name, s.email,s.dob,s.phone, a.addr_id, a.street, a.city, a.state, a.zip,a.co

Hibernate学习(五)———— hibernate一对一关系映射详解

一.一对一关系的概述 一对一关系看起来简单,其实也挺复杂的.其中关系就包含了四种,单向双向和主键关联外键关联. 什么意思呢,也就是包含了单向一对一主键关联.双向一对一主键关联,单向一对一外键关联,双向一对一外键关联, 这四种中,单双向就不用在说了把,就是看你业务需求来去设置是否是单双向,而外键关联也很简单,前面的一对多和多对多度是依靠外键关联关系来写的.那主键关联关系是怎么样的呢?其实跟外键关联差不多,唯一的区别就是,让一个类的主键当作外键使用来指向另一个关联类的主键,从而两个类的主键就达到了同

hibernate(五) hibernate一对一关系映射详解

序言 之前讲解了一对多(单向.双向).多对多(双向),今天就讲解一下最后一个关系,一对一. 心情不错.状态也挺好的,赶紧写一篇博文造福一下大家把. --WZY 一.一对一关系的概述 一对一关系看起来简单,其实也挺复杂的.其中关系就包含了四种,单向双向和主键关联外键关联. 什么意思呢,也就是包含了单向一对一主键关联.双向一对一主键关联,单向一对一外键关联,双向一对一外键关联, 这四种中,单双向就不用在说了把,就是看你业务需求来去设置是否是单双向,而外键关联也很简单,前面的一对多和多对多度是依靠外键

Hibernate 集合映射 一对多多对一 inverse属性 + cascade级联属性 多对多 一对一 关系映射

1 . 集合映射 需求:购物商城,用户有多个地址. // javabean设计 // javabean设计 public class User { private int userId; private String userName; // 一个用户,对应的多个地址 private Set<String> address; private List<String> addressList = new ArrayList<String>(); //private Str

一对一关系映射

hibernate提供了两种一对一关联关系的方式,按照外键映射和按照主键映射. 一对唯一外键关联映射是多对一关联映射的特例 可以采用标签,指定多的一端的unique=true,这样就限制了多的一端的多重性为一. 通过这种手段映射一对一唯一外键关联 采用主键不要加字段,采用外键是需要加字段的.一对一唯一外键关联其实就是多对一的一个特例,只是限制了unique=true 的含义就是在多的一端添加一个外键指向一的一端,不过这里要限制唯一性.这种情况下其实还是多对一映射. 二.hibernate一对一唯

Hibernate一对一关系映射

Hibernate提供了两种一对一映射关联关系的方式: 1)按照外键映射 2)按照主键映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映射方式分别完成以下持久化操作 (1)保存员工档案的同时分配给员工一个账号 (2)加载员工档案的同时加载账号信息 一:按照外键映射 HibernateUtil工具类(用于获取session和关闭session) package cn.util; import org.hibernate.Session

EntityFramework之一对一关系(二)

下面新建两个实体,关系为一对一 Product为产品类,WarrantyCard为保修卡类,一个产品对应一个保修卡,一个保修卡对应一个产品. 1.新建实体类 1 public class Product 2 { 3 public int Id { get; set; } 4 public string Name { get; set; } 5 public string Description { get; set; } 6 7 public virtual WarrantyCard Warra