2016-05-02 4 views
1

Когда мне нужно закрыть соединение с базой данных? я создать соединение один раз при запуске приложения, а затем я использую диспетчер сущностей таким образом:Когда мне следует закрыть диспетчер Entity?

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

Возможный дубликат [Hibernate EntityManager, он должен будет использоваться в качестве одноэлементных?] (Http://stackoverflow.com/questions/9370819/hibernate-entitymanager-is -Он-предполагается, чтобы быть использован, как-синглтон) – Raffaele

ответ

2

Вы не должны ставить объект entitymanager, это должен быть объект, который удаляется после выполнения ваших транзакций. Это также означает, что вы должны закрыть его после завершения операции. EntitymanagerFactory может оставаться статичным, вам нужно всего лишь 1 для каждой программы. Причина в том, почему вы должны закрыть его, заключается в том, что вы тратите ресурсы на свое устройство.

Longer/лучшее объяснение на EMF https://stackoverflow.com/a/4544053/6270761

Смежные вопросы