Czy tworzenie enitytyManagera w konstruktorze jest poprwane? Będzie się tworzył za każdym razem, gdy stworzę obiekt klasy Db. Czy w każdej metodzie będę musiał zrobić close czy może jakoś inaczej powinno to wyglądać? I pytanie czy cała transakcja powinna być w bloku try/catch?
package com.my.app.daoImpl;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import com.my.app.models.Employee;
public class Db {
private EntityManagerFactory entityManagerFactory;
private EntityManager entityManager;
public Db(){
entityManagerFactory = Persistence.createEntityManagerFactory("myDatabaseConfiguration");
entityManager = entityManagerFactory.createEntityManager();
}
public void saveEmployee(Employee employee){
//rozpoczynamy transakcje
entityManager.getTransaction().begin();
entityManager.persist(employee);
entityManager.getTransaction().commit(); //konczymy tranasakcje
//Czy to ma tutaj sens?
entityManager.close();
entityManagerFactory.close();
}
}