请解释Hibernate中Eager fetching和cascade-type all的区别。
在这两种配置中,我们都可以加载与其父对象相关联的子对象,那么它们之间的区别是什么?
在这两种配置中,我们都可以加载与其父对象相关联的子对象,那么它们之间的区别是什么?
简单来说:考虑两个实体,1.部门和2.员工,它们之间存在一对多的映射关系。也就是说一个部门可以有很多员工。级联类型为CascadeType.ALL,这意味着DepartmentEntity上发生的任何更改都必须同步到EmployeeEntity中。如果您保存了一个Department,则所有相关的Employee也将保存到数据库中。如果您删除一个Department,则与该Department关联的所有Employee也将被删除。
Cascade-type all是PERSIST,REMOVE,MERGE和REFRESH级联类型的组合。级联类型all的示例
Eager获取类型本质上是Lazy的相反。Lazy是所有Hibernate注释关系的默认获取类型。当您使用Lazy获取类型时,Hibernate不会加载该特定对象实例的关系。Eager将默认加载Hibernate加载的特定对象相关的所有关系。单击此处以查看示例。