2

有两种使用持久性单元的方法,代码或注释。

代码
[..]
EntityManagerFactory 电动势;
emf = Persistence.createEntityManagerFactory("SOMEPU");
[..]

或者

注释
[..]
@PersistenceContext(name = "persistence/LogicalName", unitName = "SOMEPU")
[..]

问题:如果您想更改持久性单元(或指向不同的 jdbc 源),我可以轻松地调整源代码版本以从某些设置文件或其他文件中读取变量。但我不能将变量放入注释中。什么是解决方案?

是的,我可以始终保持相同的 PU 并将应用程序服务器中的 jbdc 资源指向其他地方,但我不希望任何人在 AS 的管理设置中修补。

欢呼斯文

4

1 回答 1

0

如果您绝对必须使用注释来获取您的 PersistenceContext,那么我想您可以将 EntityManager 的创建包装在某个类中,然后将其注入需要它的 bean 中?

public interface MyPersistenceContext
{
      public void getEntityManager();
}

然后在你的 EJB 中:

public class MyEJB
{

      @EJB
      private MyPersistenceContext persistenceContext;

      private EntityManager em;

      @PostConstruct
      public void postConstruct()
      {
             em = persistenceContext.getEntityManager();
      }

 ....

您提供的 MyPersistenceContext 的实现如何创建 EntityManager 取决于您。

于 2009-07-24T11:42:58.680 回答