当实体类中存在一对多关系时,我总是看到人们使用收集框架的接口。例如,如果作者写了许多书,那么它看起来像这样:
@OneToMany(mappedBy = "author")
private List<Book> books;
为什么不
@OneToMany(mappedBy = "author")
private ArrayList<Book> books;
或
@OneToMany(mappedBy = "author")
private Set<Book> books;
不是
@OneToMany(mappedBy = "author")
private HashSet<Book> books;
那为什么要使用接口而不是收集框架的实现?
答案 0 :(得分:2)
推荐的方法是使用接口而不是具体类型,因为Hibernate在幕后注入了自己的实现(例如PersistenBag
,PersistentSet
等),以提供懒惰的加载/脏检查和其他魔力。也结帐了this个答案。