SpringBoot实体类配置、Jpa查询、lombok注解整合笔记
⼀、表结构与配置
;
Constructor;
;
ng;
;
;
any;
;
ist;
;
@Setter
@Getter
@ToString
@NoArgsConstructor
@Entity
@Table(name="DEMO_ONE")
publicclassDemoOne{
@Id
@GenericGenerator(name="idGenerator",strategy="nerator")
@GeneratedValue(generator="idGenerator")
@Column(name="ID",length=50)
privateStringid;
@Column(name="NAME",length=50)
privateStringname;
@e
@OneToMany(mappedBy="demoOne")
privateList
}
;
Constructor;
;
ng;
tence.*;
@Setter
@Getter
@ToString
@NoArgsConstructor
@Entity
@Table(name="DEMO_MANY")
publicclassDemoMany{
@Id
@GenericGenerator(name="idGenerator",strategy="nerator")
@GeneratedValue(generator="idGenerator")
@Column(name="ID",length=50)
privateStringid;
@Column(name="NAME",length=50)
privateStringname;
@ManyToOne(fetch=)
@JoinColumn(name="DEMO_ONE_ID")
privateDemoOnedemoOne;
}
DEMO_ONE
IDNAME
1one1
2one2
DEMO_MANY
IDNAMEDEMO_ONE_ID
1many21
2many21
3many32
4many42
1、多对⼀需要配置懒加载,使⽤@ToString需要在关联的⼀⽅加@e
如果不加懒加载,当你使⽤jpa⾃带findAll或者jpa查询规则findByName查询DEMO_MANY表会执⾏3条⼀句:
语句A:,…frommanye
语句B:,…=1
语句C:,…=2
如果加了懒加载机制,只会执⾏⼀条语句,当使⽤oOne()时,才会去执⾏语句B或者语句C,以此类推…!
如果使⽤了lombok的@ToString注解,关联会死循环导致内存溢出,需要在关联任意的⼀⽅加@e,建议在⼀对多
的⼀⽅加,因为toString会去懒加载,查询数据库!
2、CascadeType详解
T:级联保存
多对⼀时,⼀般先是找出数据库存在的one,赋值(one),保存save(many)完成关联保存,当如果数据库中不存在one,这
时候需要在@OneToMany配置cascade=T属性,这时候就要先创建新的one,Oneone=new
One(),赋值(one),保存save(many)完成关联保存,此时就会同时保存one和many;如果不加cascade=
T属性就会报异常savethetransientinstancebeforeflushing!
⼀对多时保存的时候要注意是,不管是从数据库查询出来额many还是new出来的many,都需要(one),否则关联关系将不
会创建出来!
:级联删除
如果你要删除⼀个实体,但是它有外键⽆法删除,配置该属性会删除与之关联的所有外键对应的数据!
:级联更新(合并)
未实践
:级联脱管/游离
如果你要删除⼀个实体,但是它有外键⽆法删除,配置该属性会撤销所有相关的外键关联!
H:级联刷新
未实践
本文发布于:2022-12-07 00:47:54,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/56310.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |