我希望创建一个通用的DAO来处理我的Hibernate应用程序中的CRUD。 我的实体大多数关联都是延迟加载的。 但是,为了使Hibernate在SELECTs方面尽可能高效,我不得不在我的DAO上创建多个方法。 这就是我的意思:
实体A有两个关联。 有时我想检索此实体而不加载关联,有时我想要完全填充它,所以我会在DAO上放置两种方法:
实体A有两个关联。 有时我想检索此实体而不加载关联,有时我想要完全填充它,所以我会在DAO上放置两种方法:
getWhatever()
getWhateverWithLoadedAssociations()
我将有两个不同的查询,一个没有 join fetch,另一个有 join fetch。结果是,无论是否为 LAZY,Hibernate 都会始终执行单个 select,因为我知道我想要预先获取什么。
这样做的问题是,虽然可以节省一两个 SELECT,但由于方法数量增加了复杂性。
那么这样做是否过于极端?我是否只应该有 getWhatever(),并让 Hibernate 在需要关联数据时再执行另一个 select,即使我可以通过不执行那个 SELECT 来节省呢?
希望这不太令人困惑。我正在尝试弄清楚由于 lazy loading 导致的 SELECT 数量与代码复杂性之间的代价。
谢谢