Saltar al contenido

JPA: cuándo usar getTransaction () cuando se persisten objetos

Mantén la atención ya que en esta reseña vas a encontrar el resultado que buscas.Esta crónica ha sido aprobado por nuestros especialistas para garantizar la calidad y veracidad de nuestro contenido.

Solución:

Si usa contenedores administrados EntityManager entonces estás usando transacciones JTA. Por lo tanto, no necesita (más precisamente, no puede) interferir con EntityManagerLas transacciones obtenidas mediante entityManager.getTransaction(). El JTA inicia y confirma su transacción.

Si usa la aplicación administrada EntityManager y no desea ser parte de la transacción JTA, entonces debe administrarlos usted mismo (se denomina administrador de entidad local de recursos).

Por lo general, la aplicación administrada EntityManager que trabaja con EntityManager.getTransaction() se utiliza en el entorno Java SE.

EDITAR: Puede que te interese la sección 7.5 Transacciones de control de la especificación JPA 2.0.

En GAE no hay Java EE/JTA, así que ignore términos como transacciones gestionadas por beans (BMT) y transacciones gestionadas por contenedores (CMT).

Su trabajo es transaccional (donde quiere que varios objetos vayan al almacén de datos a la vez, o que todos fallen; aquí es donde tiene que usar getTransaction()), o no transaccional (donde todo va al almacén de datos uno por uno, y el la falla de una persistencia no afecta a otras; aquí es donde simplemente llama a persist()/merge()/remove()).

Google App Engine tiene su gestión de transacciones (https://developers.google.com/appengine/docs/java/datastore/transactions), pero la interfaz de transacciones de JPA no conoce algunas de las funcionalidades subyacentes de GAE (es decir, grupos de entidades).

Por lo tanto, depende de su aplicación decidir qué operaciones realizar en una transacción y cuáles no.
Debe incluir operaciones de transacción que deben ejecutarse atómicamente.

Recuerde como práctica recomendada realizar acciones en cascada y operaciones de relación en una transacción porque JPA podría desencadenar muchas consultas y podría generar una situación de datos inconsistentes.

Ejemplo de uso de transacción con JPA2:

import javax.persistence.EntityTransaction;


EntityTransaction txn = em.getTransaction();
txn.begin();
try 
    //do something with your database
    txn.commit();
 
finally 
   if (txn.isActive())
      txn.rollback(); 

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *