Springdatajpa中一对多时实体类的单向关联和双向关联

这个项目里都是单向关联,因为没有双向关联的需求。(即便如此,这个项目里还是要去处理某些循环引用的情况。)

 

不过还是要对比一下。

单向关联:

单向关联指的是实体类A中有一个实体类B变量,但是实体类B中没有实体类A变量,即为单向关联。

双向关联 :

双向关联指的是实体类A中有一个实体类B变量,而实体类B中也含有一个实体类A变量,即为双向关联。

 

在双向关联时,可能会存在对象序列化成JSON字符创时的死循环问题,因为A中包含B,B中也包含A,序列化A中的B时,因为B也含有A,A又含有B,所以会死循环。

 双向关联中你如果从数据库里面查询一个User对象,那么User对象里面有Role,Role里面又有User对象,那么你用syso输出User对象,如果toString方法里面包含有输出User.roles的话,那么是必然会造成死循环。如果用spingmvc等框架将后台数据返回给前台也是同理,也会造成返回的JSON数据死循环

一对多需要使用@JoinColumn注解和@OneToMany配置使用,如果是双向关联,则还需要在被关联的实体类的成员变量中使用@ManyToOne。具体细节就不细说了,懂的都懂。

这个项目中:
List<Product> products = productService.listByCategory(category);
用product的DAO方法由category查到List<Product>,因为product中有多对一的单向关联,多是product,一是category。

请看下面一句话,这句话摘录自下面的链接指向的博客。
在使用spring data jpa 的过程中,有时候会有双向依赖的需求,如查询班级时需要级联查出班级内所有的学生,查询学生时需要查询学生所在的班级。
细品这句话,就知道为什么该项目都是单向依赖。

https://blog.csdn.net/sinianliushui/article/details/101452018
https://blog.csdn.net/u013759988/article/details/99677327

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值