`

Hibernate一对多,多对一,多对多,一对一关系汇总

阅读更多

Hibernate如果上手了,那么所谓的一对多,多对一,多对多,一对一这些关系,应该很快能理解.

下面就把这几种关系简单说一下.
本文中用到的三个实例化类分别为Customer(保存客户基本信息),CustomerDetails(保存客户详细信息),CustomerBack(中间表,保存两表之间的关联)
对应的表功能同上.
说明中的主表指Customer,子表指CustomerDetails,中间表指CustomerBack

一对多

1
2
3
4
5
6
7
8
9
<set name="CustomerDetails" table="customer_details"
    inverse="false"
    cascade="all"
    sort="unsorted"
>
 
<key column="cust_Id"/>
<one to many class="com.hibernate.otm.CustomerDetails"/>
</set>

这段代码是需要放在一对多中的主表配置中的
name:集合属性的名称(也可以理解为一对多中那个子属性名)
table(可选,默认为属性的名称):集合表的名称(可理解为一对多中子表的名称)
inverse(可选,默认为false):标记这个集合作为双向关联关系中的方向的一端.
cascade(可选:默认为none):让操作级联到子实体.
sort(可选):指定集合的排序顺序.
其它如schema,lazy,order–by,where,outer–join,batch–size,access请参照有关书籍.

key 中的column=”cust_Id”,cust_Id并不是主表的字段,而是子表中保存主表的字段.
如主表主键为cust_Id,子表中为了保存主表的主键,也建一个cust_Id,key里的cust_Id就是指子表中的cust_Id.
one–to–many 中的class为一对多的子表实例类.

多对一

1
2
3
4
5
6
7
8
9
<many to one
    name="Customer"
    class="Customer"
    cascade="all"
    outer join="false"
    update="false"
    insert="false"
    column="cust_Id"
    not null="true"/>

多对一中,没有像一对多的,而是直接用了many–to–one.这段代码是需要放在多对一中的子表配置中的(即CustomerDetails的配置中)

outer–join:为外链接
update,insert:指定对应的字段是否在用于UPDATE和/或INSERT的SQL语句中包含.
column:关联的字段名.(多对主类对应的字段名)
not–null:是否为null.

多对多

1
2
3
4
5
<set name="CustomerBack" table="customer_back"
    cascade="all">
    <key column="cust_Id"/>
    <many to many class="CustomerDetails" column="custD_id"/>
</set>

多对多的配置与一对多有点类似.这段代码放的位置也是与一对多的代码放的位置一样.
多对多关系中,多采用中间表来关联两个有多多关系的表的.如Customer与CustomerDetails存在多对多的关系,那么往往是用另外一个表如CustomerBack表来保存它们的关系的,也就是中间表.

name:属性的名称(可理解为中间表的名称)
table:表的名称(可理解为中间表的表名称)
key 里的cust_Id,是指中间表的cust_Id,为了保存Customer与CustomerDetails的关系,中间表中分别建了cust_Id(Customer的主键)与custD_Id(CustomerDetails的主键)
many–to–many中的Class是指多对多中的另一个实例化类,column是指CustomerDetails与中间表关联的字段名.这里是指中间表的custD_Id,不能理解为CustomerDetails的主键.

一对一

1
2
3
4
5
<one to one
 name="CustomerDetails"
 class="CustomerDetails"
 cascade="all"
 />

一对一的关系更简单.
在Customer表的配置中放上这段代码就行了.
name:属性名称
class:关联的实例化类名

分享到:
评论

相关推荐

    hibernate学习资料大全

    Hibernate 支持各种关联映射,如一对一、一对多、多对一和多对多。理解这些关联关系的建立和查询,能够帮助开发者设计出更灵活的数据模型。 8. **缓存机制**: Hibernate 提供了第一级缓存和第二级缓存,以及查询...

    hibernate jar包汇总

    6. **关系映射**:Hibernate支持多种关系映射,包括一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)和多对多(@ManyToMany)。这些关系可以通过`@JoinColumn`或`@JoinTable`进行详细配置。 7. **...

    hibernate文档总结,技术汇总,PDF版的,hibernate简明参考文档

    13. **关联映射**: Hibernate支持一对一、一对多、多对一和多对多的关联映射,允许对象之间建立复杂的关联关系。 14. **事件监听器**: Hibernate允许注册事件监听器,监听对象的生命周期事件,如加载、保存、更新和...

    hibernate4.1中文api

    - **映射一对多关联**: 如何在一对多关联中使用外键或联合表。 - **自然id**: 使用非主键属性作为唯一标识。 - **任意**: 映射任意类型的数据。 - **属性**: 更多关于属性映射的细节。 - **hbm.xml特异性**: 在`.hbm...

    Hibernate使用技巧汇总

    - **一对一、一对多、多对多关系**: - **单向一对多**: 只需在一方配置关联。 - **双向一对多**: 需要在双方配置关联。 - **多对多**: 通常涉及一个中间表来维护多个实体之间的关联。 #### 八、延迟加载配置 - ...

    Hibernate_基础汇总(一)

    ### Hibernate基础汇总(一) #### ORM Mapping 概念解析 ORM(Object Relational Mapping),即对象关系映射,是一种程序技术,用于将关系数据库的数据映射到对象上。这一概念包含三个关键点: - **O:Object** ...

    Hibernate常见面试题汇总

    【Hibernate常见面试题汇总】 1. **数据库查询优化** - **建立索引**:索引可以大大提高查询速度,特别是针对频繁查询的列。 - **减少表间关联**:尽量减少JOIN操作,多表查询可能导致性能下降。 - **优化SQL**...

    Hibernate_API_zh-cn高手汇总

    Hibernate支持一对一、一对多、多对一和多对多四种关联关系的映射,通过注解或XML配置实现: - @OneToOne:一对一关系。 - @OneToMany:一对多关系,通常配合@ManyToOne使用。 - @ManyToOne:多对一关系。 - @...

    Spring,hibernate,struts常见的面试笔试题汇总

    它支持多种关系,如一对一、一对多和多对多,通过配置文件中的many-to-one、one-to-many、many-to-many等注解实现。Hibernate的缓存机制包括一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存,可...

    韩顺平.2011版.hibernate3.3 笔记 ppt 汇总

    8. 关联映射:详述一对一、一对多、多对一、多对多等各种关联关系的配置与使用。 9. 高级特性:如级联操作、事件监听、动态模型、批量操作等进阶主题。 10. 实战案例:通过实际项目例子,演示Hibernate在开发中的...

    Hibernate

    9. **集合映射**:Hibernate 支持一对一、一对多、多对一和多对多的关联映射,允许在对象之间建立复杂的关联关系。 10. **事务管理**:Hibernate 支持JTA和JDBC两种事务管理方式,确保了数据库操作的原子性和一致性...

    2022年Hibernate常见面试题汇总.doc

    - 默认检索策略:不同关联类型有不同的默认策略,如多对一和一对一通常为外连接加载,一对多和多对多为立即加载。 - `load()`和`get()`的区别:load()支持延迟加载,若记录不存在则抛异常;get()找不到记录返回...

    hibernate 3.2中文手册 中文文档

    - 展示如何映射具有关联关系的类,例如一对多、多对一等。 - **1.3.2 单向Set-based的关联** - 解释单向关联的实现方法,特别是如何使用集合类型进行映射。 - **1.3.3 使关联工作** - 提供实现这些关联的实际...

    hibernate错误汇总

    解决方案:首先检查实体类和映射文件中是否正确配置了一对多或多对一的关系,确保在对应的实体类中添加了@OneToMany或@ManyToOne注解,并在映射文件中使用标签。其次,确保在查询时,使用fetch="join"来触发连接查询...

    hibernate3.6 文档(pdf 格式)

    - **单向关联与连接表**:介绍如何使用连接表来映射一对多和多对一关系。 - **双向关联**:探讨双向关联的实现方法,包括一对多和多对一关系。 - **双向关联与连接表**:说明如何使用连接表来实现双向关联。 #### ...

    传智播客的struts2,hibernate,spring的ppt汇总

    2. **Hibernate**:实体类设计、映射配置、CRUD操作、关联映射(一对一、一对多、多对多)、事务管理、性能优化等。 3. **Spring**:IoC容器、AOP原理、Spring MVC、数据源配置、事务管理、Spring与Struts2、...

    java之hibernate和spring技术难点及其要点总结

    ### Java之Hibernate和Spring技术难点及其要点总结 #### Hibernate与Spring...通过以上对Hibernate和Spring技术栈中的关键知识点的梳理,希望能帮助读者更好地理解和掌握这两个框架,从而在实际开发中更加游刃有余。

    Struts Spring Hibernate面试题汇总

    【SSH面试题汇总】主要涉及的是Struts、Spring和Hibernate这三个流行Java EE框架的相关知识,以及MVC设计模式的理解。MVC(Model-View-Controller)模式是软件工程中的一种架构模式,它将应用程序分为三个核心组件:...

    Hibernate_query聚合函数查询.

    本篇主要探讨的是Hibernate对数据库查询中聚合函数的应用,这些功能使我们能够高效地处理数据统计和汇总任务。在学习过程中,我们经常会遇到诸如求和(SUM)、平均值(AVG)、最大值(MAX)、最小值(MIN)以及计数...

    Hibernate 5.4版本所需jar,汇总分享给大家

    Hibernate是Java后端开发中的一款流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作的复杂性。在Hibernate 5.4这个版本中,有一些关键的jar包是必不可少的,这些...

Global site tag (gtag.js) - Google Analytics