1

我有一个带有一些 JPA/Hibernate 实体的 SEAM 应用程序。我现在想知道将我的查询和持久性方法放在哪里。

默认选择似乎将它们放在注入的会话 bean 层中

@PersistenceContext(...) @Inject EntityManager entityManager;

但我想我宁愿拥有实体本身的方法。优点/缺点是什么?

  1. 可测试性?
  2. 好看吗?
  3. 表现?

是否有人从实体上的方法而不是会话 bean 中获得与 EntityManager 等交互的最佳实践的链接?

最好的,安德斯

4

2 回答 2

2

我没有使用 SEAM 的经验,但根据我使用 Java 项目的经验,我发现让 bean 远离持久方法是最简单的方法。我们通常做的:

  • 拥有业务对象的 bean(例如“用户”和“设置”)
  • 有一个可以持久化和检索这些 bean 的 DAO 层(简单的 CRUD)
  • 有一个服务层,它现在知道如何处理 bean,甚至可能如何构建 bean 的聚合

这样一来,一切都非常分离,并且很容易进行单元测试。性能通常不是此设置的问题。

于 2008-10-08T15:28:51.867 回答
1

是的,这也是我之前所做的。

总的来说,我认为 EJB 非常冗长和样板化,但 SEAM 实际上有点帮助,所以这就是为什么在我当前的项目中,额外的会话 bean 层只是为了查询和持久化让我烦恼。我有一种感觉,如果我可以杀死这一层,我可以制作一个相当简洁的应用程序......

于 2008-10-08T15:34:07.783 回答