`

一对一关联映射(one-to-one)

XML 
阅读更多
(1)一对一关联映射含义:
既两个对象之间的一对一关系,以及如何加载它的引用对象如:Person(人) <--对应-->IdCard(身份证号)

(2)实现一对一关联的两种策略
    1)主键关联:既让两个对象拥有相同的主键值,既表明他们是一一对应的关系;
                数据库不会有额外的字段来维护他们之间的关系,仅通过表的主键关联。
    2)唯一外键关联:外键关联,本来用来配置多对一的关系映射,但是如果加上唯一的限
                制后,也可以用来实现一对一关联映射。
(3)实体类ER图
    Person                           IdCard 
-------------                    -------------
   id:int                           id:int
   name:String                      carNo:String
   IdCard:idCard(引用)
实体类在数据库中表的表现形式:
    t_person                           t_idCard
-------------                       -------------
id  |  name                         id  |  carNO
  1  |  alpha                         1  |  88888

说明1:因为要查询到某个人和这个人的身份证号,所以人的实体类需要持有身份证类的引用;反之如果先拿到身份证号,需要找到身份证号对应的某个人,那么就需要咋身份证类中持有人的实体类的引用。
说明2:单向一对一就是从人的实体类可以找到某个人对应身份证号类中的号码,反之不行。
假如规定只能从人的实体类中找到该人在身份证号实体类中对应的身份证号码则:
此时Person类中的id就有两个角色,既是Person类的主键和IdCard类的外键

      双向一对一就是从任何一个类都可以找到另一类中一一对应的信息。

主键关联的讲解:
(1)通过t_person和t_idCard两张表中id实现相同逐渐关联
(2)因为Person类中含有对IdCard类的引用,所以必须先有身份证号,后有人的信息
(3)重点:此时Person类的id不是自己生成而是参照IdCard类的id生成(通过配置文件实现)
(4)实现:通过配置文件将对象关系转换成类--表的关系映射
Person.hbm.xml文件的核心配置
<class name="com.tarena.pojo.Person" table="t_person">
   <id name="id">
     <generator class="foreign"><!--注意此处主键生成策略是foreign-->
      <param name="perpoty">idCard(此处为Person类中IdCard的引用)</param>
     </generator>
   </id>
   <one-to-one name="idCard" constrained="true"/>
   <!--此标签name的属性也是IdCard的引用,使约束属性为true,目的说明Person的id也是IdCard的外键约束-->
  </class>
(5)测试代码
   IdCard idCard = new IdCard();(插入操作)
      idCard.setCardNO("88888888");//默认了cascade级联属性所以它是第一个存
   Person person = new Person;
      person.setName("张三");
      persion.setIdCard(idCard);//将身份证类的实例赋值给Person的引用
   session.save(person);//将Person实例存入数据库

  Person person =(Person)session.load(Person.Class,1);(查询操作,传id)
  System.out.println("person.name"+person.getName());
  System.out.println("person.cardNO"+person.getIdCard().getCardNO;

分享到:
评论

相关推荐

    hibernate one-to-one 一对一唯一外键关联映射_单向 and 双向

    hibernate one-to-one 一对一唯一外键关联映射_单向 and 双向

    Many-to-one关联映射

    关联映射的本质: 将关联关系映射到数据库,所谓的...&lt;many-to-one&gt;会在多的一端加入一个外键,指向一的一端,这个外键是由&lt;many-to-one&gt; 中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致

    Hibernate学习笔记

    020 &lt;one-to-one&gt;、&lt;many-to-one&gt;单端关联上的 lazy(懒加载)属性 021 继承关联映射 022 component(组件)关联映射 023 复合主键 关联映射 024 其它 关联映射 025 hibernate 悲观锁、乐观锁 026 hibernate 操作树形...

    hibernate学习笔记

    hibernate多对一关联映射(Hibernate_Many2One) 7 hibernate一对一主键关联映射(单向关联Person----&gt;IdCard) 8 hibernate一对一主键关联映射(双向关联Person&lt;----&gt;IdCard) 9 hibernate一对一唯一外键关联映射...

    Hibernate_Annotation关联映射

    1.共享主键的一对一关联映射: @Entity @Table(name="Test_Body") public class Body { private Integer id; private Heart heart; @Id public Integer getId() { return id; } public void setId(Integer id...

    unidirectional-one2one-sharedprimarykey:该存储库正在存储有关Hibernate映射示例的源代码-共享主键上的单向一对一关联-one source code

    单向一对一共享主键 该存储库正在存储有关Hibernate映射示例的源代码-共享主键上的单向一对一关联

    hibernate常用关联映射源码(很实用)

    该资源包括了hibernate开发中的常见关联映射的源代码,其中包括:one2one,one2many,many2many等,还有继承映射,inverse,fetch,cascade关键字的应用等,对初学者来说,是很实用的,难度适中,很好理解

    unidirectional-one2one-foreignkey:该存储库正在存储有关Hibernate映射示例的源代码-一对一-one source code

    Hibernate映射-单向关联 外键一对一关联 在此示例中,我创建两个表:人员和地址。 这两个表都有一个自动递增的id作为主键。 人员表持有地址表中的外键。

    NHibernate中文文档

    一对多关联(One-To-Many Associations) 14 延迟初始化(延迟加载)(Lazy Initialization) 14 集合排序(Sorted Collections) 14 使用 &lt;idbag&gt; 14 双向关联(Bidirectional Associations) 14 三重关联(Ternary ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    HibernateAPI中文版.chm

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    hibernate3.2中文文档(chm格式)

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    hibernate annotation帮助文档

    一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. 映射复合主键与外键 2.2.7. 映射二级表...

    Hibernate3的帮助文档

    7.2.5. 一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...

    精通Hibernate之映射继承关系(六)

    Company与Employee类之间为一对多多态关联关系,如果继承关系树的根类对应一个表,或者每个类对应一个表,那么就能映射Company类的employees集合。...many-to-onename="a"class="ClassA"column="A_ID"cascade="s

    Hibernate中文详细学习文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    hibernate 框架详解

    一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...

    Hibernate 中文 html 帮助文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,...

    hibernate 体系结构与配置 参考文档(html)

    一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及...

    Hibernate+中文文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

Global site tag (gtag.js) - Google Analytics