这个项目里都是单向关联,因为没有双向关联的需求。(即便如此,这个项目里还是要去处理某些循环引用的情况。)
不过还是要对比一下。
单向关联:
单向关联指的是实体类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