2011-07-22 15 views
0

私は小さな問題を抱えていましたが、私はいつもGenericDAOパターンでHibernateとSpringのWebで作業していましたが、EJBやstuffなどを使用しないGUIアプリケーション。管理されていない環境でのHibernate

私の主な問題は、私はこの

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

を持っていましたが、今、私はこのようなことを行うことである。

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

はちょうど私が持っている大きな欠陥があることで気づくようになりましたこのGenericDAOクラスを継承するたびに、毎回1つのEntityManagerFactoryを作成していますが、どうすればよいですか?

EDIT:

が、これはそれを解決するためにneatest方法だろう同意?

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

あなたはまだ春または他の容器なし依存性注入パターンを使用することができます - 1つの場所でEntityManagerFactoryを作成し、それらを作成するときにDAOオブジェクトに注入。

+0

各呼び出しで1つのEntityManagerFactoryを提供するシングルトンのようなものはありますか? – javaNoober

+0

@ JavaNoober:ある時点で、DAOを構築する必要があるということです。この点を集中化すると、そこに 'EntityManagerFactory'を設定することができます。ほとんど春のようですが、春はありません。 – axtavt

+0

私はうまくいきましたが、人々はすでにトランザクションをコミットし始める必要があると不満を持ち、すべてのDB側を開発者から遠ざけようとしています – javaNoober

関連する問題