2

我是 JPA 和 CDI 的新手,我正在尝试使用这些框架创建企业应用程序。

我知道如何注入 bean 并保持一切整洁和无状态。我还知道 JPA 会为我加载关系等,这样我就不必再担心了。我仍然将我的 DAO 用于特定的查找方法,当然还可以创建新实体。

我知道我不想将东西注入我的实体,因为它们由 JPA 管理,我需要使用new关键字来创建一个新实体(而不是加载)。

我习惯于使用其他类来管理我的实体,例如,如果我们有一个用户和一个组,我使用无状态 bean 来管理组(创建新的、查找的等),并且这个无状态 bean 使用我的 DAO 来检索和发送数据。

我使用 Group 实体来管理用户(也许这是错误的?)但我不想将 DAO 注入到 Group 中,因为它是一个实体。我知道这个设计有问题,但我找不到最佳实践。

所有管理类都应该是 EJB 吗?我习惯于为我的逻辑创建域类,我是否应该抛弃这个概念,将我的所有逻辑放在 EJB 中并仅使用实体来保存数据?

4

1 回答 1

1

我使用 Group 实体来管理用户(也许这是错误的?)但我不想将 DAO 注入到 Group 中,因为它是一个实体。我知道这个设计有问题,但我找不到最佳实践。

如果 aGroupUsers,则将其映射为一个集合(可能是 OneToMany)。

使用另一个不同的 bean 来封装持久性操作,例如 aGroupService或 a GroupDao。在这个 bean 中,您将注入一个 EntityManger,它负责持久性(“管理用户和组”)。

本教程应该给你一个开始。

所有管理类都应该是 EJB 吗?

当然不一定。但是在不知道您的要求的情况下很难说(阅读:不可能)。我建议您添加带有更多信息的孤立问题,然后更容易讨论您的问题......

根据经验:尝试将实体(Group、User)与业务逻辑和持久性操作(GroupService、...Dao)分开。

我发现这本书对后 J2EE 模式进行了很好的概述和讨论。

于 2012-04-18T14:49:42.173 回答