2016-05-02 16 views
1

データベースとの接続をいつ閉じる必要がありますか? 私は、接続にアプリケーションが開始1時間を作成し、私はこの方法でエンティティマネージャを使用します。いつエンティティマネージャを閉じる必要がありますか?

public void createItem(TYPE item){ 
     em.getTransaction().begin(); 
     em.persist(item); 
     em.getTransaction().commit(); 
    } 

public class Connection { //creating connection (one time) 
     private static final String PERSISTENCE_UNIT_NAME = "ejb"; 
     private static EntityManagerFactory factory; 
     private static EntityManager em; 

     static{ 
      factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
      em = factory.createEntityManager(); 
     } 
     public static EntityManager getEntityManager() { 
     return em; 
     } 
} 

私はそれが接続eveyに各操作を閉じて(などの作成)とするとき、私の新しいconnecionを作成しても意味がありませんだと思いますアイテムを再度保存したい。

+1

の可能性のある重複の説明[休止状態のEntityManagerは、それがシングルトンとして使用されることになっているのですか?](http://stackoverflow.com/questions/9370819/hibernate-entitymanager-is - シングルトンとして使用されると思われる) – Raffaele

答えて

2

entitymanagerを静的にしないでください。トランザクション後に削除されるオブジェクトである必要があります。これはまた、操作が完了した後に閉じなければならないことを意味します。 EntitymanagerFactoryは静的になり、各プログラムの実行に必要なのは1つだけです。それを閉じるべき理由は、デバイス上のリソースを無駄にしているためです。

長い/良好EMF https://stackoverflow.com/a/4544053/6270761

関連する問題