【问题标题】:Keep all entities in one EJB module将所有实体保存在一个 EJB 模块中
【发布时间】:2011-01-13 14:14:44
【问题描述】:

很少有应用程序使用 java 持久性。每个应用程序都有自己的一组实体,它们代表 DB 中的相同表。例如,应用程序 A 具有 Table1、Table2 等实体;同时,应用程序 B 也有 Table1、Table2 等的实体。我想创建一个新的 EJB 模块,其中包含 1 个具有本地接口的 bean,将所有实体移入其中,并将其作为库添加到项目中可能需要访问持久对象。所以,它看起来像

@Stateless
public class DataBean implements DataLocal {        
@PersistenceContext(unitName="my_data")
private EntityManager em ;  
public EntityManager getManager()
{
  return em;
};
}

我是 Java-ee 的新手,所以我想知道它是否是一个糟糕的设计。 提前致谢。

【问题讨论】:

  • 我猜你的意思是说“我有一些使用 java 持久性的应用程序”,对吧?

标签: java jpa jakarta-ee persistence ejb-3.0


【解决方案1】:

很少有应用程序使用 java 持久性。

你在开玩笑吗? :)

我想创建一个新的 EJB 模块,其中包含 1 个具有本地接口的 bean,将所有实体移入其中,并将其作为库添加到可能需要访问持久对象的项目中。

将实体放在单独的 JAR 中绝对是重用和模块化的正确方法。要使用此类打包实体,请使用persistence.xml 中的jar-file 元素使它们对需要它们的每个应用程序的打包持久性单元可见。

我是 Java-ee 的新手,所以我想知道它是否是一个糟糕的设计。提前致谢。

我不明白无状态会话 bean 和返回 EntityManager 的 getter 的意义,我认为你不需要它。

【讨论】:

  • 我想要的是不要过多地改变现有的来源。目前每个应用程序都有一个无状态bean,它使用资源注入来获取EntityManger。我的想法是注入 DataBean 并在需要时调用 getManager()。
  • @a1ex07 我看不到最后的区别,应用程序很可能需要一个 EntityManager。所以这实际上是更多的工作和更详细的恕我直言。但也许我错过了一些东西。
  • 我只是在考虑不同的方法......我完全忘记了 persistence.xml 可以包含 jar-file 部分,感谢您指出这一点。
猜你喜欢
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
  • 2016-02-11
  • 2012-03-23
相关资源
最近更新 更多