社区
Web 开发
帖子详情
hibernate中 one-to-many 、many-to-one、many-to-many 在什么情况下用?
adan-阿丹
2010-10-22 12:41:03
hibernate中 one-to-many 、many-to-one、many-to-many 在什么情况下用?
...全文
306
12
打赏
收藏
hibernate中 one-to-many 、many-to-one、many-to-many 在什么情况下用?
hibernate中 one-to-many 、many-to-one、many-to-many 在什么情况下用?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tuoxie119
2010-10-24
打赏
举报
回复
[Quote=引用 1 楼 wcc3672018 的回复:]
对象之间在是什么样的一个关系,在数据库中又有什么样的关系。
在表达这些关系的时候就需要使用这些了
one-to-many:一对多的关系
例如:一个人可以有N个房产证,一个房产证只会属于一个人。
数据库里面,人是一张表,房产证是一张表,那么这两个表就是一对多的关系。反过来就是manytoone
many-to-many:多对多的关系
例如:一个老师教N个学生,而一个学生有N个老师。
在……
[/Quote]
基本上就是数据库里的一对多,多对多关心的反应,两个po都要有xml配置文件,所以一个一对多关心,在两个配置文件中(主表和子表),是one-to-many和many-to-one
sdfsf双方各
2010-10-24
打赏
举报
回复
看看。。。。。。。。。。
shadow55
2010-10-23
打赏
举报
回复
做表关联的时候
jumpheightway
2010-10-23
打赏
举报
回复
当一方出现必然会出现另一方的时候就可以用
也可以不用
狂想者
2010-10-23
打赏
举报
回复
同上。。。。。。。。。
tang871015
2010-10-22
打赏
举报
回复
对象之间在是什么样的一个关系,在数据库中又有什么样的关系。
在表达这些关系的时候就需要使用这些了
one-to-many:一对多的关系
例如:一个人可以有N个房产证,一个房产证只会属于一个人。
数据库里面,人是一张表,房产证是一张表,那么这两个表就是一对多的关系。反过来就是manytoone
many-to-many:多对多的关系
例如:一个老师教N个学生,而一个学生有N个老师。
在数据库里面,老师是一张表,学生是一张表,通常会建立中间的关系表,把两个表的主键放在中间表做联合主键来表达多对多的关系。
yjflinchong
2010-10-22
打赏
举报
回复
用来映射关系的。
无伤
2010-10-22
打赏
举报
回复
[Quote=引用 1 楼 wcc3672018 的回复:]
对象之间在是什么样的一个关系,在数据库中又有什么样的关系。
在表达这些关系的时候就需要使用这些了
one-to-many:一对多的关系
例如:一个人可以有N个房产证,一个房产证只会属于一个人。
数据库里面,人是一张表,房产证是一张表,那么这两个表就是一对多的关系。反过来就是manytoone
many-to-many:多对多的关系
例如:一个老师教N个学生,而一个学生有N个老师。
……
[/Quote]
这个例子很好, 楼主可以找hibernate的书看一下。
luoye_teng
2010-10-22
打赏
举报
回复
many-to-many:多对多的关系
one-to-many:一对多的关系
many-to-one:多对一
这个在hibernate里,映射的时候,只要看是否需要映射配置文件,将你数据库里的表的关系映射出来。
楼上已经举例子了。
我一般用都是会选择将表的所有关系都映射到配到文件,
那样在后续做一些特殊的查询功能里,用hql语句会很方便,
就是选多对多。只要数据库的表与表之间有关系的我通通的映射出来。
后面的写hql语句的一些链接什么的。通通可以通过对象点出来。
比如说,
两个表的引用关系,A表引用B表,映射出来的实体A中会有B的对象。
到时候做查询就不用自己在写表的链接,直接通过,A实体里B的对象点出B实体里的变量。
blazingfire
2010-10-22
打赏
举报
回复
many-to-many,用得我不多,没把握。
many-to-one一般在程序中表现为子表对象里存储一个主表对象
blazingfire
2010-10-22
打赏
举报
回复
one-to-manay和manay-to-one都是主从表关系在hibernate中的描述,在java中,就是一个对象包含多个子对象,一般的子对象用list集合表示
wcc3672018
2010-10-22
打赏
举报
回复
对象之间在是什么样的一个关系,在数据库中又有什么样的关系。
在表达这些关系的时候就需要使用这些了
one-to-many:一对多的关系
例如:一个人可以有N个房产证,一个房产证只会属于一个人。
数据库里面,人是一张表,房产证是一张表,那么这两个表就是一对多的关系。反过来就是manytoone
many-to-many:多对多的关系
例如:一个老师教N个学生,而一个学生有N个老师。
在数据库里面,老师是一张表,学生是一张表,通常会建立中间的关系表,把两个表的主键放在中间表做联合主键来表达多对多的关系。
使用
hibernate
时发现one-to-one与many-to-one的默认不是懒加载
项目
中
使用到
hibernate
5,在one-to-one 及many-to-one时,发现不是懒加载。 通过ide自动生成发现如下: 默认改为急切加载了? 于是查看
hibernate
5.2文档 The
Hibernate
recommendation is to statically mark all associations lazy and to use dynamic fetching ...
Hibernate
延迟加载 或 no session or session was closed 问题的解决(OpenSessionInViewFilter使用)
Hibernate
延迟加载 或 no session or session was closed 问题的解决(OpenSessionInViewFilter使用) 在
Hibernate
配置文件
中
配置many-to-one 或者 one-to-many 等
情况
时.设置lazy="true"时 在查询对结果操作时会出现以上
情况
.将lazy="true" 改为 lazy="false" 可以解决
使用
Hibernate
来看看
官方提供的优化措施 尽量使用many-to-one,避免使用单项one-to-many 灵活使用单向one-to-many 不用一对一,使用多对一代替一对一 配置对象缓存,不使用集合缓存 一对多使用Bag 多对一使用Set 继承使用显示多态 HQL:from object polymorphism=”exlicit” 避免查处所有对象 消除大表,使用二级缓存
hibernate
多对一应注意的问题
hibernate
的many-to-one mapping是默认用主键进行映射的,可以用property-ref 指向外键,否则可能产生错误:Exception in thread "main" java.lang.NullPointerException at org.
hibernate
.persister.entity.AbstractEntityPersister.loadByU
Hibernate
中
outer-join、lazy 、fetch join关键字的使用
1、outer-join关键字(many-to-one的
情况
)outer-join关键字有3个值,分别是true,false,auto,默认是auto。true: 表示使用外连接抓取关联的内容,这里的意思是当使用load(OrderLineItem.class,"id")时,
Hibernate
只生成一条SQL语句将OrderLineItem与他的父亲Order全部初始化。select * fr
Web 开发
81,108
社区成员
341,721
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章