2011-07-22 77 views
0

我遇到了一個小問題,我一直在用GenericDAO模式在Web上使用Hibernate和Spring,現在我使用Hibernate作爲GUI應用程序,它不使用任何類似EJB和東西。在非託管環境中休眠

我的主要問題是,我曾經有過這樣

@PersistenceContext(unitName = "persistenceUnit") private EntityManager em;

但我現在做的事情是這樣的:

private EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); private EntityManager em = emf.createEntityManager();

剛來到注意到一個很大的缺陷我是每當我繼承這個GenericDAO類時,我每次都創建一個EntityManagerFactory,我該怎麼做?

編輯:

同意這將是最好的方式來解決它?

private EntityManagerFactory emf; 
private static final Connector INSTANCE = new Connector(); 

public static Connector getInstance() { 
    return INSTANCE; 
} 

private Connector(){   
    emf = Persistence.createEntityManagerFactory("persistenceUnit"); 
} 

public EntityManagerFactory getEmf() {  
return emf; 
} 

回答

0

你仍然可以使用依賴注入模式無彈簧或其它容器 - 在一個地方創建EntityManagerFactory和其注入DAO對象,當你創建它們。

+0

就像一個單獨的東西在每次調用時爲我提供一個EntityManagerFactory? – javaNoober

+0

@JavaNoober:我的意思是在某個時候你需要構建你的DAO。如果你把這點集中起來,你可以在那裏設置'EntityManagerFactory's。幾乎像春天,但沒有春天。 – axtavt

+0

好吧,得到了亞,但我做得很好,人們已經抱怨他們必須開始並提交交易,試圖讓所有數據庫方面遠離開發人員 – javaNoober