1. 单向多对一
映射配置:
// 多对一,懒加载
@ManyToOne(fetch = FetchType.LAZY)
// 多方的外键id
@JoinColumn(name = “xxx_id”)
注意:一方不要实例化
保存时,先保存一方,再保存多方
2. 单向一对多
映射配置:
// 一对多,默认懒加载,最好是写出来
@OneToMany(fetch = FetchType.LAZY)
// 多方的外键id
@JoinColumn(name = “xxx_id”)
集合最好是实例化出来,否则很容易空指针异常
保存时,先保存一方,再保存多方
3. 集合映射
List:有序,可重复,一般用在组合关系
Set:无序,不可重复,一般用在多对多,也有一对多
在声明集合的时候,一定要使用接口
Set products = new HashSet<>();
List products = new ArrayList<>();
因为Hibernate在创建了集合对象后是使用了它的的集合类PersistentSet/PersistentBag来接收数据的,而不是HashSet/ArrayList。如果我们使用接口声明(Set/List),那么它的集合类PersistentSet/PersistentBag也是实现了这个接口。所以它可以把这个类赋给Set/List。 但是我们使用HashSet/Array