我是JPA和CDI的新手,我正在尝试使用这些框架创建企业应用程序。
我得到了如何注入豆类并保持一切整洁和无状态。我也得到JPA为我加载关系等,这样我就不用再担心了。我仍然使用我的DAO用于特定的查找方法和当前创建新实体。
我知道我不想将内容注入我的实体,因为它们是由JPA管理的,我需要使用new
关键字来创建一个新实体(而不是加载)。
我习惯用其他类来管理我的实体,例如,如果我们有一个User和一个Group,我使用无状态bean来管理组(创建新的,找到一些等),这个无状态bean使用我的DAO检索和发送数据。
我使用Group实体来管理用户(可能这是错的?)但我不想将DAO注入到Group中,因为它是一个实体。我知道这个设计有问题,但我找不到最好的做法。
所有管理类都应该是EJB吗?我习惯为我的逻辑创建Domain类,我应该抛弃这个概念,将所有逻辑放在EJB中并使用实体来保存数据吗?
答案 0 :(得分:1)
我使用Group实体来管理用户(也许这是错的?)但是 我不想将DAO注入集团,因为它是一个实体。一世 我知道这个设计有问题,但我找不到最好的 为此练习。
如果Group
有User
s,请将其映射为集合(可能是OneToMany)。
使用另一个不同的bean来封装持久性操作,例如:一个GroupService
或GroupDao
。在这个bean中,你将注入一个EntityManger,它负责持久性(“管理用户和组”)。
This tutorial应该给你一个开始。
所有管理类都应该是EJB吗?
当然不一定。但是在不知道你的要求的情况下告诉它有点困难(阅读:不可能)。我建议您添加更多信息的孤立问题,然后更容易讨论您的问题...
根据经验:尝试将实体(组,用户)与业务逻辑和持久性操作(GroupService,... Dao)分开。
我发现this book提供了关于后期J2EE模式的出色概述和讨论。