`

Hibernate学习小结之实体对象之间关系

阅读更多

双向一对一关系:
实体对象之间一对一的关联是通过数据库的外键实现的
外键的使用有以下两种方式:
主键关联:      不需要借助额外字段,直接通过两个表的主键来关联,两表中相关联的记录要使用相同的主键值
唯一外键关联 :某个表的外键字段关联到另一个表的主键字段上,是多对一关联的特例

主键关联:
首先需要在Student对象的配置文件中定义到Address对象的关联:
<one-to-one name="address" class="Address" ></one-to-one>
然后需要在Address对象的配置文件中定义到Student对象的关联
<one-to-one name="student" class="Student" cascade="all"></one-to-one>
并修改Address对象配置文件的id元素
<id name="id" column="id">
<generator class="foreign">
    <param name="property">student</param>
</generator>
</id>

唯一外键关联:

为每一个Address配给一个Student,形成一对一,address表格通过student_id作为外键参考至student:
Student.hbm.xml文件:
<one-to-one name="address" class="Address" property-ref="student" ></one-to-one>

在<one-to-one>中,property-ref告诉Hibernate,查询出 address 并将其参考至 student
Address.hbm.xml文件:
<many-to-one name="student" class="Student" column="student_id" unique="true" fetch="join" ></many-to-one>

unique="true":使多对一变成一对一

在多的一端加入一个外键,参考一的一端,加载多的一端,一的一端自动加载进来


双向一对多关联关系:
Clazz类文件代码如下:
public class Clazz {
private Long id;
private String Name;
private Set<Student> students = new HashSet<Student>();
}

Clazz.hbm.xml文件:
<set name="students" cascade ="save-update" inverse="true" >
<key column="class_id"></key>
<one-to-many class="Student"/>
</set>
cascade="save-update":操作时的级联关系,在执行save和update时进行级联操作
一般讲cascade配置在one-to-many(one的一方),和one-to-one(主对象一方)
inverse="true":使“多”的一方变为主控方,用在双向关联关系中
column="class_id":指定关联方与本类关联的外键字段
class="Student":关联的目标类
<set>的常用属性如下:
name    映射类属性的名字
lazy    是否采用迟延加载
inverse    标识双向关联中被动的一方,为true时表示控制方为对方
<key>元素是<set>的子元素,必不可少,用于描述两者之间的关联关系
<key>元素的常用属性:
column        父元素所持有的类所对应表的外键字段名
on-delete    外键关联是否打开数据库级别的级联删除,noaction|cascade
not-null    表明外键字段是否可以为空,true|false
update    表明外键是否可以被更新,true|false
unique    表明外键是否有唯一性约束,true|false

Student类文件修改如下:
public class Student {
private Long id;
private String name;
private Integer age;
private Clazz clazz;
private Address address;
}
Student.hbm.xml文件:
<many-to-one name="clazz" class="Clazz“ column="class_id">
</many-to-one>
<one-to-one name="address" class="Address" property-ref="student"></one-to-one>

 

多对多关联关系:
多对多在这里表示为:many-to-many
实现多对多需要一个中间表

班级Clazz的配置
    <set name="teachers" table="class_teacher " cascade=“all“ inverse=“true”>
         <key column="class_id"></key>
         <many-to-many class="entity.Teacher" column="teacher_id“  />
    </set>

教师Teacher的配置
    <set name="classes" table="class_teacher ">
        <key column="teacher_id"></key>
        <many-to-many class="entity.Clazz" column="class_id"/>
    </set>

分享到:
评论

相关推荐

    hibernate学习总结文档

    Hibernate 是一个开源的对象关系映射(ORM)框架,它为 Java 开发者提供了一种在 Java 应用程序中管理关系数据库的方式。通过 ORM,Hibernate 可以将 Java 类与数据库表之间的映射关系自动化,从而简化数据访问层的...

    hibernate 映射关系学习入门 多对多实体映射

    Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,从而实现了面向对象编程和关系数据库之间的桥梁。Hibernate提供了强大的查询语言HQL(Hibernate Query Language)以及 ...

    Hibernate实体层设计

    总结,Hibernate实体层设计是Java开发中非常重要的一环,理解并熟练掌握实体的定义、属性映射和关联映射,以及如何在实际项目中运用,能够极大地提升开发效率和代码质量。在设计实体层时,应充分考虑业务需求,合理...

    Hibernate 操纵持久化对象

    总结,Hibernate操纵持久化对象涉及多个方面,包括对象状态管理、事务处理、查询机制、缓存策略以及关系映射等。熟练掌握这些概念和操作,将极大地提高开发效率,并有助于构建高效、稳定的数据库应用程序。通过实践...

    Hibernate对象关系详解

    在Java世界中,Hibernate作为一款强大的对象关系映射(ORM)框架,使得开发者可以方便地在Java对象与数据库表之间进行数据操作。本篇将深入探讨Hibernate中的对象关系映射,包括一对一(One-to-One)、一对多(One-...

    hibernate学习入门一对多实体映射源码

    总结,本教程通过"hibernate学习入门之一对多实体映射源码"引导初学者理解如何在Hibernate中建立和操作一对多的关系。通过源码学习,开发者可以更好地理解实体之间的关联以及如何在实际项目中有效地运用这些关系。

    Hibernate学习总结.doc

    Hibernate是ORM框架的代表,它实现了对象与关系数据库之间的自动持久化,通过元数据描述映射关系。映射文件通常与持久类同名,位于同一包内,用于定义对象到表的对应关系。Hibernate中的POJO类通常包含唯一标识符...

    Hibernate学习笔记与总结

    **Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...

    hibernate实体生成工具

    Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来处理数据库操作,而实体生成工具则是这个过程中不可或缺的一部分。 ### Hibernate概述 Hibernate是一种开源的Java ORM框架,它为...

    hibernate关联关系总结

    Hibernate关联关系是Java持久化框架Hibernate中的核心概念,它允许我们在数据库中建立对象之间的关系映射,以便在程序中操作对象时,可以自动处理与数据库的交互。本篇将深入探讨Hibernate的四种主要关联关系:一对...

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

     1.2.5 域对象之间的关系  1.2.6 域对象的持久化概念  1.3 小结  1.4 思考题 第2章 Java对象持久化技术概述  2.1 直接通过JDBC API来持久化实体域对象  2.2 ORM简介  2.2.1 对象-关系映射的概念  2.2.2 ORM...

    hibernate对象关系映射实例

    “对应关系有一对一,多对一,多对多”则提示我们将深入学习这三种常见的数据库关联关系在Hibernate中的实现方式。 **Hibernate ORM详解** Hibernate是Java平台上的一个开源ORM框架,它通过提供数据持久化服务,...

    hibernate学习总结

    **hibernate学习总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序与数据库之间的交互。在Java世界中,Hibernate 提供了一种在对象模型和关系数据库之间进行转换的机制,使得开发...

    北大青鸟Hibernate学习资料

    本学习资料集合了多个关于Hibernate的重要主题,包括对象关系映射的基础、持久化机制、查询语言以及不同类型的关联关系,旨在帮助学习者深入理解并掌握Hibernate的核心概念和技术。 1. **对象状态及一对多关联** ...

    Hibernate 简单 PPT 总结

    - "2018-7-24-Hibernate-配置表关系.pptx"和"06-2018-7-9-Hibernate-对象关系映射文件.pptx"可能分别讲解了如何配置实体间的关联关系和编写ORM映射文件。 - "01-2018-7-7-Hibernate.pptx"可能是Hibernate基础概念和...

    hibernate实现数据库表的多种关系

    这表明内容主要关注Hibernate框架,开发者可以通过学习这个示例,提升自己在使用Hibernate进行数据库操作和对象关系映射方面的技能。 **文件名:“TestHibernate”** 这很可能是包含测试代码的类或者模块,用于验证...

    05_传智播客hibernate教程_实体对象的三种状态与saveOrUpdate方法

    总结来说,理解和掌握实体对象的三种状态以及`saveOrUpdate`方法是优化Hibernate应用的基础。通过深入学习这些概念,开发者能够更有效地处理数据持久化,提高代码的稳定性和可维护性。在实践中,应根据具体需求选择...

    Hibernate4总结文档

    总结,Hibernate4通过配置文件、映射文件以及Java实体类,实现了Java对象与数据库表的映射,简化了数据库操作。通过Session工厂和Session,我们可以方便地执行CRUD操作,并利用HQL进行对象查询。理解并熟练掌握这些...

    Hibernate 关联关系解除

    总结,Hibernate的关联关系解除是ORM中重要的一部分,通过理解源码、使用工具以及实践操作,我们可以更好地管理和控制实体间的关联,保证数据的准确性和应用的高效运行。在进行关联解除时,务必考虑到业务逻辑、数据...

Global site tag (gtag.js) - Google Analytics