【发布时间】:2014-12-03 15:13:56
【问题描述】:
我目前正在做一个 Grails 项目,我需要使用 Hibernate Criteria 编写一些查询。
我应该在哪里编写我的 Hibernate Criteria 查询以及为什么?
是服务层吗?或者避免贫血的域模型并在那里编写命名查询会是一个更好的主意吗?或者,我应该在服务层下创建一个单独的层吗?
【问题讨论】:
标签: hibernate grails grails-orm criteria
我目前正在做一个 Grails 项目,我需要使用 Hibernate Criteria 编写一些查询。
我应该在哪里编写我的 Hibernate Criteria 查询以及为什么?
是服务层吗?或者避免贫血的域模型并在那里编写命名查询会是一个更好的主意吗?或者,我应该在服务层下创建一个单独的层吗?
【问题讨论】:
标签: hibernate grails grails-orm criteria
正如@Joshua-moore 已经提到的:这取决于。
我的rule of thumb:
其中一部分可以与域类耦合为namedQueries。
另一个 - 就像 findAllBy 直接在控制器内部一样简单。
如果您需要在复杂的跨域事务中插入/更新数据 - 使用 services
【讨论】:
简短的回答是“取决于”。
更长的答案是“这取决于您如何构建应用程序”。
如果您计划将所有内容委托给服务层,那么服务层是放置查询的好地方。
如果您打算使用来自多个服务的相同查询或将它们链接起来,那么域类上的命名查询更有意义。
因此,“这取决于”您的应用程序是如何设计的。只要满足您的要求并促进代码重用,任何一个都是可接受的放置查询的地方。
【讨论】: