对于hibernate的映射关系一直是我心头上的一块病,所以,决定这次把它攻克下来
1.关于映射关系是双向关联还是单向关联,这个完全是根据需求来定制得,没有统一得标准
room和userInfo 一对多 再room.hbm.xml中配置
<set name="users" cascade="all">
<!-- 映射User表的外键roomid -->
<key column="roomid"></key>
<!-- 一对多映射class UserInfo -->
<one-to-many class="UserInfo"></one-to-many>
</set>
userInfo 表中配置
<!-- 映射roomid属性作为UserInfo实体与Room实体的关联,其字段在userinfo表中 -->
<property name="roomid" column="roomid" type="java.lang.Long"/>
假如添加room对象的时候,同时也保存userInfo,假如数据库没有关联关系正常,userInfo的roomid会变成0,所以数据库有关联得话会报错,所以要将userInfo.hbm.xml中配置
<property name="roomid" column="roomid" type="java.lang.Long" insert="false" update="false"/>
此时假如再userInfo用到room对象就只能双向关联了,hibernate推荐是双向关联
此时就需要将
<property name="roomid" column="roomid"/>
改成
<many-to-one name="room" column="roomid" class="Room" />
假如同样是添加room对象的时候,同时也保存userInfo,此时会执行三条sql语句,第一条,保存room,第二条保存userInfo,让后再更新userInfo得roomId,这样效率就比较低,此时inverse粉墨登场了,可以通过inverse得属性设置将控制权交给userInfo此时需要修改得配置room.hbm.xml
<!-- 通过Room实体的users集合属性映射,级联动作为全部 -->
<!-- 将inverse属性设置为true,表示维护动作由UserInfo实体来完成 -->
<set name="users" cascade="all" inverse="true">
<!-- 映射User表的外键roomid -->
<key column="roomid"></key>
<!-- 一对多映射class UserInfo -->
<one-to-many class="UserInfo"></one-to-many>
</set>
让后再操作的时候
//保证UserInfo实体得到与Room实体的关系,以帮助由UserInfo来维护外键关联
userInfo.setRoom(room);
现在的查询语句变成了两条,第一条是插入room,第二条是插入Userinfo,单向关联不管什么时候都是执行三条sql语句,所以我们推荐使用双向关联,插入数据时inverse一般交给多得那方来配置
分享到:
相关推荐
《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...
### Hibernate精华笔记全纪录 #### 一、知识准备与背景介绍 **1. JDBC基础** 在深入了解Hibernate之前,首先需要掌握Java Database Connectivity (JDBC)的基础知识。JDBC是Java中用于连接各种类型数据库的标准API...
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
**Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...
《Hibernate学习笔记——马士兵教程解析》 在Java开发领域,ORM(Object-Relational Mapping)框架的使用已经非常普遍,其中Hibernate作为一款优秀的ORM框架,因其强大的功能和易用性深受开发者喜爱。本文将根据马...
《马士兵Hibernate学习笔记》是一份深入浅出的教程,旨在帮助初学者掌握Hibernate这一流行的Java持久化框架。Hibernate是一个对象关系映射(ORM)工具,它允许开发者用面向对象的方式来操作数据库,从而减少了传统...
在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...
这篇文档和学习笔记将深入介绍Hibernate的核心概念、API用法以及最佳实践。 1. **Hibernate核心概念** - **对象关系映射(ORM)**: Hibernate是ORM的一种实现,它允许开发者使用面向对象的方式来操作数据库,而...
【hibernate个人学习笔记完整版】是一份详尽的资料,涵盖了Hibernate框架的基础到高级应用,旨在帮助学习者深入理解和掌握这一强大的Java对象关系映射(ORM)工具。Hibernate作为Java开发中的主流ORM框架,它极大地...
### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...
在学习Hibernate的过程中,我们首先要理解它的核心概念和功能。 1. **对象/关系映射(O/R Mapping)**:Hibernate的核心就是解决O/R映射的问题,允许我们在Java对象和数据库表之间建立映射关系,使开发者可以使用...
根据提供的信息,我们可以总结出以下关于达内HIBERNATE学习笔记的重要知识点: ### 第一章:Hibernate入门 #### 1.1 学习目标 - 理解Hibernate的基本概念。 - 掌握如何使用Hibernate进行开发。 #### 1.2 对象持久...
【Hibernate学习笔记】 Hibernate是一个强大的Java对象关系映射(ORM)框架,它简化了数据库与Java应用程序之间的交互。本笔记将深入探讨Hibernate的核心概念、配置、实体管理、查询语言以及事务处理等方面,帮助...
【hibernate学习笔记_北大青鸟课堂笔记全文】 Hibernate是一个强大的对象关系映射(ORM)框架,它为Java开发者提供了便捷的数据持久化方案。在Java应用中,尤其是在企业级开发中,它扮演着至关重要的角色,使得我们...
本文将基于第一天学习Hibernate的笔记,详细解析其基本操作与实现。 首先,引入Hibernate所需的库文件至关重要。这包括Hibernate的核心库以及相应的数据库驱动JAR包。这些库文件提供了对ORM操作的支持,使得Java...
**Hibernate学习笔记与大纲** Hibernate 是一款开源的Java语言下的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式处理数据,而无需过多关注底层的SQL语句。本笔记将深入...
【hibernate学习笔记】 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。以下是对Hibernate的学习要点的详细解释: 1. **建立第一个Hibernate版本的HelloWorld** - **...
**Hibernate学习笔记** Hibernate是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。本笔记将深入探讨Hibernate的核心概念、配置、实体管理、查询语言以及最佳实践...