@JoinColumn 与mappedBy
来源:互联网 发布:流程优化小组 编辑:程序博客网 时间:2024/05/29 18:25
观察
当我们只使用@ManyToOne
和@OneToMany
修饰实体的关联对象时,那么使用@ManyToOne
修饰的多的一方会自动增加一个外键来管理关联关系,同时,@OneTomany
修饰的一的一方也会自动增加一个中间表来维持关系关系。那么当级联增加时(父类中含有子类对象),会产生三种insert,分别添加两个实体和一条关联表数据,这是一的一方通过增加关联表的方式来维持关联关系。当级联增加时,我们再设置每个子类的父类属性为父类对象,那么子类的外键会被设置为父类id,这是多的一方通过设置子类外键的方式来维持关联关系。
思考
当我们使用@JoinColumn
修饰两个关联对象时,不会创建表,对于子类来说,只是指定了外键字段的名字,就算没有@JoinColumn
修饰也会创建外键。对于父类来说,使hibernate用子类的外键来维持关联关系。当我们级联增加时,inset了子类和父类,并修改了子类外键为父类id,这是一的一方通过update子类外键来维持关联关系的结果,因为结构改变了,所以一的一方改变了自己维持关联关系的方式,因为程序中没有设置子类的父类属性为父类对象,所以一的一方没有主动维持关系。当我们给一的一方修饰mappedBy时(@OneToMany(cascade={CascadeType.ALL},mappedBy)
),会使一的一方放弃维持关系,也就是他不会update子类外键,这时我们要通过在程序中设置子类对象的父类属性为父类对象来维持关系。如果父类没有放弃维持关系,同时在子类的父类属性中又设置了父类对象,那么update操作是多余的,影响性能的。
总结
有中间表的结构时,父类通过插入中间表来维持关联关系,没有时,父类通过update子类外键维持关系。子类是通过设置子类对象的父类属性为父类对象类维持关联关系。@JoinColumn
可以用来修饰一的一方,避免建立中间表,当子类的父类属性设置了父类对象时,可以用mappedBy修饰一的一方,避免多余的update属性。
- @JoinColumn 与mappedBy
- hibernate annotation 之mappedBy 与 @JoinColumn区别
- hibernate annotation 之mappedBy 与 @JoinColumn区别
- mappedBy跟JoinColumn/JoinTable
- mappedBy跟JoinColumn/JoinTable
- mappedBy跟JoinColumn/JoinTable .
- JPA JoinColumn vs mappedBy
- Hibernate中@OneToMany与ManyToOne的mappedBy和@JoinColumn区别
- Using JoinColumn, JPA using oneToMany mappedBy
- Using JoinColumn, JPA using oneToMany mappedBy
- Hibernate @OneToMany的mappedBy和@JoinColumn总结
- Hibernate的注解中的mappedBy和JoinColumn的区别
- Hibernate中,mappedBy和注解@JoinColumn的对比
- Hibernate中,mappedBy和注解@JoinColumn的对比
- Hibernate中mappedBy和@JoinColumn二者的使用心得
- Hibernate中,mappedBy和注解@JoinColumn的对比
- @JoinColumn 与@Column
- JPA:mappedby与joincolmun
- Android API官方文档 存储选项
- 关于XML的解析的问题
- 2015蓝桥杯省赛模拟题C组
- Android菜单的使用
- 关于jsp中的tablib标签的定义与使用
- @JoinColumn 与mappedBy
- bzoj3196: Tyvj 1730 二逼平衡树
- 蓝桥杯历届——核桃数量
- Java设置图片背景
- [问题记录.WinDbg]在64位系统上抓取32位进程的dump
- 容器无法启动
- Win32 SDK学习笔记3
- STM32固件下载
- qsort函数、sort函数