Я видел несколько примеров в Интернете, которые проверяют, активна ли транзакция в начале процесса.JPA Toplink - в чем необходимость проверки активной транзакции в начале процесса?
Код, который является моим, получает EntityManager с завода.
Не могу понять Почему нужно проверять, активна ли транзакция ДО начала даже() ???
Это потому, что какой-либо другой процесс может использовать один и тот же экземпляр EntityManager? (The EntityManagerFactory является синглтоном, но EntityManager не является)
@Path("update")
@PUT
@Consumes("application/json")
public Response machineUpdate(String content) {
JSONObject jObj = null;
EntityManager em = null;
EntityTransaction txn = null;
try {
JSONObject jObj = new JSONObject(content);
em = EmProvider.getInstance().getEntityManagerFactory().createEntityManager();
//what's this line doing here???
if(em.getTransaction().isActive()) {
return HttpStatusHandler.sendConflict();
}
txn = em.getTransaction();
txn.begin();
//more process ......
}
catch(.....
Я не использую JTA (отключен в persistences.xml), но на основе моего исследования и вашего заявления, что isActive() проверка в начале не требуется, спасибо! –