2009-07-24 87 views
2

有两种使用持久性单元,代码或注释的方式。Java EE5中的可配置持久性+

CODE
[..]
EntityManagerFactory的电动势;
emf = Persistence.createEntityManagerFactory(“SOMEPU”);
[..]

ANNOTATION
[..]
@PersistenceContext(名称= “持久性/ LogicalName” 的unitName = “SOMEPU”)
[..]

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

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

欢呼 斯文

回答

0

如果你绝对使用注释,让您的PersistenceContext,那么我想你可以换一些类的EntityManager的创建,然后有注入到需要它的豆?

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的是你。