【发布时间】:2017-04-29 15:15:28
【问题描述】:
我想编写一个 JPA 应用程序,但我在理解存储库和服务概念时遇到了问题:
假设我们有 3 个实体: A、B 和 C。
实体A需要设置B和C:A.setB(B), A.setC(C)才保存。
另外为了阅读,我只想返回 DTO,因为它们会让我从 LazyInitializationException、Open Session In View Anti-Pattern 等中解放出来,并且为了修改数据,我将使用实体(这些准则也在本书 High-Performance Java Persistence 中进行了描述) .
首先,用户将使用一些数据进行 HTTP POST,这些数据将被转换为 ABCGuiObject。 REST 控制器将调用 serviceA.save(ABCGuiObject)。
坚持选项:
选项 #1 - 该服务将创建 3 个对象 A、B、C 并将它们传递给 repositoryA.save(A,B,C)。 repositoryA 将在 a.setB 和 a.setC 中执行。
选项 #2 - 该服务将创建 3 个对象 A、B、C,执行 a.setB 和 a.setC 并调用 repositoryA.save(A)。
DTO 检索
我想编写一个 JPQL 查询来获取一些 DTO。我不想将实体转换为 DTO,而是直接使用 JPQL 检索它们。
选项 #1 - repositoryA 将直接返回一个 DTO。
选项 #2 - 服务会将 JPQL 查询传递给存储库 A,该存储库将具有返回 DTO 的通用查询方法。
您推荐什么方法?
【问题讨论】:
标签: java spring hibernate jpa service-layer