文档章节

hibernate---->一对多关联映射

小强斋太
 小强斋太
发布于 2016/11/09 20:07
字数 524
阅读 2
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

 

一对多关联映射利用了多对一关联映射原理

多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一
一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多

也就是说一对多和多对一的映射策略是一样的,只是站的角度不同

在一端维护关系的缺点:
 * 如果将t_student表里的classesid字段设置为非空,则无法保存
 * 因为不是在student这一端维护关系,所以student不知道是哪个班的,所以需要发出多余的update语句来更新关系

一、hihernate一对多关联映射(单向Classes----->Student)

Classes.hbm.xml

<hibernate-mapping package="com.bjsxt.hibernate">
	<class name="Classes" table="t_classes">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name"/>
		<set name="students">
			<key column="classesid"/>
			<one-to-many class="Student"/>
		</set>
	</class>
</hibernate-mapping>

Student.hbm.xml

<hibernate-mapping>
	<class name="com.bjsxt.hibernate.Student" table="t_student">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name"/>
	</class>
</hibernate-mapping>

二、hihernate一对多关联映射(单向Classes----->Student)

Classes.hbm.xml

<hibernate-mapping package="com.bjsxt.hibernate">
	<class name="Classes" table="t_classes">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name"/>
		<set name="students" inverse="true" cascade="all">
			<key column="classesid"/>
			<one-to-many class="Student"/>
		</set>
	</class>
</hibernate-mapping>

Student.hbm.xml

<hibernate-mapping>
	<class name="com.bjsxt.hibernate.Student" table="t_student">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name"/>
		<many-to-one name="classes" column="classesid"/>
	</class>
</hibernate-mapping>

三、lazy – 延迟加载(懒加载)

lazy – 延迟加载(懒加载),一般用于集合的抓取策略,也就是说只在需要用到的情况下,再发出select语句,将其相关的对象查询出来 ,set默认lazy属性的值是true,即hibernate会自动使用懒加载策略,以提高性能

<set name="students“ lazy=“false”>

          <key column="classesid" ></key>

          <one-to-many class="com.bjsxt.hibernate.Student" />

 </set>

四、inverse – 标记由哪一方来维护关联关系(双向关联中会用到)

inverse默认值为false

如果inverse设置为true,表示将由对方维护两者之间的关联关系。

inverse="true" 反转,cascade="all"级联,共同结果由对方维护两者之间的关联关系.

<set name="students“ lazy=“false” inverse=“true”>

          <key column="classesid" ></key>

          <one-to-many class="com.bjsxt.hibernate.Student" />

 </set>


 


 

 

 

 


 

 

小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
私信 提问
加载中
请先登录后再评论。
硬实时操作系统--Raw OS

Raw-OS 起飞于2012年,Raw-OS志在制作中国人自己的最优秀硬实时操作系统。 Raw-OS 操作系统特性 内核最大关中断时间无限接近0us, s3c2440系统最大关中断时间实测0.8us。 支持idle任务级别的事...

jorya_txj
2013/03/19
6.1K
1
游戏引擎--DarkGDK

Dark游戏开发工具包是一个完整的游戏引擎技术利用最新DirectX 9.0。 微软公司制作的编游戏的链接库工具,专门配合Visual C++ 2008 Express 和 DirextX 9.0 SDK,可以编辑制作3D,2D游戏,制作...

匿名
2013/04/01
2.2K
0
高效 Java Web 开发框架--JessMA

JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate、MyBatis 与 JDBC DAO 组件),集成了 Action 拦截...

伤神小怪兽
2012/11/13
9.2K
3
Fluent nHibernate

对nHibernate的封装。 特点 无XML映射文件 (.hdm.xml) 流畅接口 流程C#配置nHibernate 流畅C#映射,甚至自动映射。 强类新映射,减少类新匹配错误 * 数据库的重构,变得更容易 Fluent nHibe...

匿名
2012/11/29
3.3K
2
ORM数据访问组件--ELinq

ELinq 是一个轻量简单易用的开源Linq ORM数据访问组件,支持Nullable类型和枚举类型,对Linq的谓词提供了完美的支持,旨在让绝大部份的主流数据库都使用 Linq 来进行程序开发,让开发人员访问...

netcasewqs
2012/12/17
2K
2

没有更多内容

加载失败,请刷新页面

加载更多

用flutter_staggered_grid_view实现分页瀑布流效果【flutter20个实例之四】

一、老套路,先看样式 二、讲解 1.前言的话 GridView是一个可滚动的,2D数组控件可以用这个组件实现滚动效果,但是它渲染的高度是一样的。 如果要实现不同高度的滚动瀑布流,就要使用这个插件...

一代码农码一代
11分钟前
9
0
C语言中结构体直接赋值?

在C语言中结构体变量之间可以进行赋值操作吗? 简单结构体的赋值 先说结论:一般来说,C语言中的结构体变量可以用另一个变量对其进行赋值或初始化。简单结构体(不包含指针成员)直接赋值没有...

高奕
16分钟前
5
0
python表白神器你值得拥有

上一期云舔狗的效果好像反响不错,大家纷纷摆脱双手的束缚python云舔狗自动给微信好友发送早安晚安和播报天气预报,然后纷纷获得她(们)的芳心,就此一行君建议大家应该乘胜追击,吹响最后的号...

行哥玩Python
05/11
0
0
在SQL表中查找重复值 - Finding duplicate values in a SQL table

问题: It's easy to find duplicates with one field: 使用一个字段很容易找到duplicates : SELECT name, COUNT(email) FROM usersGROUP BY emailHAVING COUNT(email) > 1 So if we h......

fyin1314
23分钟前
14
0
Rust和为n的连续正数序列

题目:输入一个正数n,输出所有和为n 连续正数序列。 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。 fn main() { sum_is_n_continuous(15isize); ...

捍卫机密
31分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部