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

第九章 关系映射 一对一关系 唯一外键方式实现一对一

 
阅读更多

如:person与idCard

基于外键的one-to-one可以描述为多对一。

hibernate一对一唯一外键关联映射(双向关联Person<---->IdCard)
一对一唯一外键双向关联,需要在另一端(person),添加<one-to-one>标签,指示hibernate如何加载其关联对象,默认根据主键加载idcard,外键关联映射中,因为两个实体采用的是idcard的外键维护的关系,所以不能指定主键加载idcard,而要根据idcard的外键加载,所以采用如下映射方式:
<one-to-onename="idcard" property-ref="person"/>

id_card表中有一个person_id的外键。

实体类和根据共享主键方式中的一样,不变。


Person.hbm.xml:

<hibernate-mapping>
    <class name="cn.framelife.hibernate.entity.Person" table="person" catalog="hibernate">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="45" not-null="true" />
        </property>
         <!-- 没有下面的one-to-one标签也行,但那样就变成了单向关联(IdCard ----》 Person) ,也就是当知道IdCard后,能找到它属于的对应的人,但知道某人后,却无法找到相对应的IdCard-->  
        <one-to-one name="idCard" property-ref="person"/>  
    </class>
</hibernate-mapping>

IdCard.hbm.xml:

<hibernate-mapping>
	<class name="cn.framelife.hibernate.entity.IdCard" table="id_card"
		catalog="hibernate">
		<id name="id" type="java.lang.Integer">
			<column name="id" />
			<generator class="native" />
		</id>
		<property name="cardNo" type="java.lang.String">
			<column name="card_no" length="45" not-null="true" />
		</property>
		<!-- 
		指定多的一端的unique=true,这样就限制了多的一端的多重性为一   
                  通过这种手段映射一对一唯一外键关联 
        -->  
		<many-to-one name="person" column="person_id" unique="true" />  
	</class>
</hibernate-mapping>


增加与查询操作和结果都与共享主键方式中是一样的


分享到:
评论

相关推荐

    9 映射-- 一对一(两种)(人与身份)

    例如,一个人与他的身份证之间就是典型的一对一关系,一个人只有一个身份证号,而一个身份证号也只对应一个人。 2. **外键约束实现一对一**:第一种实现方式是通过外键约束。在Hibernate中,我们可以使用`@OneToOne...

    外键关联整理脚本

    4. **数据库设计范式**:外键关联是实现第三范式(3NF)和更高范式的关键,它有助于减少数据冗余和提高数据一致性。 5. **查询优化**:合理使用外键关联可以提升查询效率。但过度的外键关联可能导致JOIN操作增多,...

    Hibernate关联关系映射目录

    在一对一外键单向关联中,两个实体之间通过一个外键字段进行关联。例如,一个人(Person)与一个地址(Address)之间的关联可以通过在`Person`表中添加一个`addressId`字段作为外键来实现。在这个例子中,`Person`...

    答案《关系数据库与SQL语言》第一章练习题.docx

    《关系数据库与SQL语言》第一章练习题涉及到的关系数据库基本概念和关键知识点如下: 1. **实体完整性**:实体完整性是数据库完整性的一种,它要求主键(Primary Key)属性的值不能为空,这是通过定义主键来确保的...

    答案《关系数据库与SQL语言》第一章练习题.pdf

    《关系数据库与SQL语言》第一章练习题主要涵盖了数据库的基础概念、数据模型、关系数据库的关键特性以及SQL语言的相关知识。以下是对这些知识点的详细说明: 1. **实体完整性**:实体完整性是关系数据库的一个核心...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射  15.2 映射单向多对多关联  15.3 映射双向多对多关联关系  15.3.1 关联两端使用元素  15.3.2 在inverse端使用元素  15.3.3 使用组件类...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射  15.2 映射单向多对多关联  15.3 映射双向多对多关联关系  15.3.1 关联两端使用元素  15.3.2 在inverse端使用元素  15.3.3 使用组件类...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射  15.2 映射单向多对多关联  15.3 映射双向多对多关联关系  15.3.1 关联两端使用元素  15.3.2 在inverse端使用元素  15.3.3 使用组件类...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射  15.2 映射单向多对多关联  15.3 映射双向多对多关联关系  15.3.1 关联两端使用元素  15.3.2 在inverse端使用元素  15.3.3 使用组件类...

    Hibernate ORM - 一对多双向组合关联关系

    10. **性能考虑**:在设计一对多双向组合关联时,要考虑到查询效率、内存消耗等因素,合理选择关联的映射方式,如是否使用外键,以及关联的fetch策略。 通过以上知识点的学习和实践,开发者可以更好地理解和运用...

    答案《关系数据库与SQL语言》第一章练习题.doc

    16. 公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从部门到职员的联系类型是一对多。 17. 现有如下关系:职工(职工号、姓名、性别、职务),部门(部门编号、部门名称、职工号...

    hibernate一对多,多对一,一对多双向关联

    例如,@OneToOne 可用于表示一对一关系,@ManyToOne 和 @OneToMany 用于多对一和一对多关系。 4. **外键约束:** 在数据库层面,这些关联通常通过外键实现。Hibernate允许在映射文件或注解中指定外键的生成策略。 ...

    Entity Framework 6 Recipes 中文翻译系列-By博客园-china_fucan

    - **概念**:在一对多或一对零或多个的关系中,找到具有从属记录的主记录。 - **实现**:通过LINQ查询或导航属性。 **3-6 在查询中设置默认值** - **概念**:当查询结果为空时提供默认值。 - **实现**:使用`...

    学习hibernate的第二章

    7. **关联映射**:在Hibernate中,我们可以轻松地处理一对一、一对多、多对一和多对多的关联关系。通过配置文件或注解,可以定义实体间的关联,如外键映射、集合映射等。 8. **延迟加载**(Lazy Loading):为了...

    hibernate_reference中文文档.pdf

    - **1.2.1 映射 Person 类**:通过映射一个具体的 `Person` 类来展示一对一、一对多等关联类型的实现。 - **1.2.2 单向 Set-based 的关联**:解释单向关联的使用场景及其在 Hibernate 中的具体实现。 - **1.2.3 使...

    Hibernate 手册 第一章 Hibernate入门

    《Hibernate 手册 第一章 Hibernate入门》 Hibernate 是一个开放源码的Java持久化框架,它为Java开发者提供了一种对象关系映射工具来管理Java应用中的关系数据。本章将带你逐步走进Hibernate的世界,了解其基本概念...

    Hibernate 练习题

    2. **一对一关联映射(One-to-One)**:表示两个实体之间唯一的对应关系,例如,一个用户可以有一个唯一的账户,反之亦然。 3. **多对多关联映射(Many-to-Many)**:当两个实体之间的关系不是单一的,而是任意一方...

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

    7.2.2. 一对一(one to one) 7.2.3. 一对多(one to many) 7.3. 使用连接表的单向关联(Unidirectional associations with join tables) 7.3.1. 一对多(one to many) 7.3.2. 多对一(many to one) 7.3.3. ...

    hibernate 3.3 源码

    这些映射定义了字段之间的对应关系,如主键生成策略、关联关系(一对一、一对多、多对多)等。 4. **会话工厂(SessionFactory)** SessionFactory是线程安全的,负责创建会话实例。它是Hibernate的核心组件,初始...

Global site tag (gtag.js) - Google Analytics