【发布时间】:2011-03-24 01:55:23
【问题描述】:
我希望在我的休眠应用程序中创建一个通用 DAO 来处理 CRUD。我的实体的大多数关联都是 LAZY fetching。但是我发现为了让休眠尽可能高效地使用 SELECT,我必须在我的 DAO 上创建多个方法。这就是我的意思:
实体 A 有两个关联。有时我想在不加载关联的情况下检索这个实体,有时我希望它完全填充,所以我在 DAO 上放置了两种方法:
getWhatever()
getWhateverWithLoadedAssociations()
我会有两个不同的查询,一个没有 join fetch,另一个有 join fetch。结果是无论它是否 LAZY,hibernate 总是只进行一次选择,因为我知道我想要提前获得什么。
这样做的问题是,在保存一个或两个 SELECT 时,由于方法的数量,它增加了复杂性。
所以这是极端的吗?我是否应该只使用 getWhatever() 并在我需要关联数据时让 hibernate 进行另一个选择,即使我本可以避免不执行该选择?
我希望这不会太令人困惑。我正在尝试计算由于延迟加载而导致的 SELECTS 数量与代码复杂性的成本
谢谢
【问题讨论】:
标签: java hibernate design-patterns orm dao