2009-07-24 85 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的是你。