对Jpa中Entity关系映射中mappedBy的理解
来源:互联网 发布:超级sql注入工具下载 编辑:程序博客网 时间:2024/05/22 11:35
一。mappedBy 单向关系不需要设置该属性,双向关系必须设置,避免双方都建立外键字段
数据库中1对多的关系,关联关系总是被多方维护的即外键建在多方,我们在单方对象的@OneToMany(mappedby=” “)
把关系的维护交给多方对象的属性去维护关系
对于mappedBy复习下:
a) 只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性;
b) mappedBy标签一定是定义在the owned side(被拥有方的),他指向theowning side(拥有方);
c) 关系的拥有方负责关系的维护,在拥有方建立外键。所以用到@JoinColumn
d)mappedBy跟JoinColumn/JoinTable总是处于互斥的一方
二。下面是我自己的理解,一直对hibernate中的维护关联关系不太了解,总不知道他们具体指的是什么
这里的维护关联关系,拿多对多来说就是中间表,在不设置cascade的情况下,中间表由负责维护关联关系的一方维护
举例说明:
Game 和User 两个实体类,他们是多对多的关系,有中间表t_game-user.
在User中配置有:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
Game中配置有:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
所以说由Game来维护他们的关联关系,即中间表
表现形式:
1.因为没有配置cascade所以分别给Game,User添加4条数据,然后手动在中间表中添加他们的关联关系
2.在程序中执行删除User,
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
删除了User,并没有对中间表发生影响
3.在程序中执行删除Game
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
对中间表产生了影响,说明是Game在维护他们之间的关联关系
三。下面这里是一对多的维护关联关系,(同样是在部设置cascade的前提下)一对多的关联关系其实更简单,因为他们之间没有中间表,User和Group,他们的关联关系就是体现在one方(group)的主键是Many方(User)的外键,这个关联关系就在User的表中。因为有外键的存在,group在user删除之前,是不能够删除的,所以他们之间维护关联关系的任务就只能交给Many方(User)
- 对Jpa中Entity关系映射中mappedBy的理解
- 对Jpa中Entity关系映射中mappedBy的理解
- 对配置映射关系的mappedBy的理解
- hibernate中mappedby的理解
- JPA中one-to-one关系的单向映射示例
- JPA中one-to-one关系的单向映射示例
- 关于JPA中对MYSQL BLOB的映射
- JPA中entity的一些功能
- JPA的关系映射
- 对ORM对象关系映射的理解
- Entity Bean的映射关系
- Hibernate中一对多、多对一关系的映射
- MyBatis中多对多关系的映射和查询
- MyBatis中多对多关系的映射和查询
- MyBatis中多对多关系的映射和查询
- Hibernate中使用JPA(注解)配置对象关系映射
- JPA多对多关系映射
- hibernate中多对多关系映射
- 关于CSS的垂直居中
- Redis使用认证密码登录
- DOM(更改样式_事件)
- RMAN差异备份与累积备份区别
- 图解Android - Android GUI 系统 (5) - Android的Event Input System
- 对Jpa中Entity关系映射中mappedBy的理解
- 考试总结
- spring AOP中自身方法调用无法应用代理解决办法
- java.sql.SQLException: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general
- 静态注册广播监听网络变化
- 百度云盘+SVN 心得
- python - 使用GET和post
- 06 (补充)初始化sdram代码
- C#之DataSet和DataTable