JPA EntityTransaction Interface with Example


EntityTransaction Interface used to control transactions on resource-local entity managers. The EntityManager.getTransaction() method returns the EntityTransaction interface.
A transaction is a set of operations that either fail or succeed as a unit. Transactions are a fundamental part of persistence. A database transaction consists of a set of SQL DML (Data Manipulation Language) operations that are committed or rolled back as a single unit. An object-level transaction is one in which a set of changes made to a set of objects are committed to the database as a single unit.
JPA provides two mechanisms for transactions. When used in Java EE JPA provides integration with JTA (Java Transaction API). JPA also provides its own EntityTransaction implementation for Java SE and for use in a non-managed mode in Java EE. Transactions in JPA are always at the object level, this means that all changes made to all persistent objects in the persistence context are part of the transaction.
EntityTransaction Interface provides important methods to handle Transactions in JPA based applications. The below are important methods of EntityTransaction Interface.

EntityTransaction Interface Methods

EntityTransaction Interface - Class Diagram

The below class diagram shows a list of methods that EntityTransaction Interface provides.
  • void begin() - Start a resource transaction.
  • void commit() - Commit the current resource transaction, writing any unflushed changes to the database.
  • boolean getRollbackOnly() - Determine whether the current resource transaction has been marked for rollback.
  • boolean isActive() - Indicate whether a resource transaction is in progress.
  • void rollback() - Roll back the current resource transaction.
  • void setRollbackOnly() - Mark the current resource transaction so that the only possible outcome of the transaction is for the transaction to be rolled back.

EntityTransaction Interface Example

Let's use few important EntityTransaction interface methods to handle transactions in JPA based applications.
private static void insertEntity() {
    EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("PERSISTENCE");
    EntityManager entityManager = entityManagerFactory.createEntityManager();
    EntityTransaction entityTransaction = entityManager.getTransaction();
    entityTransaction.begin();
    Student student = new Student("Ramesh", "Fadatare", "rameshfadatare@javaguides.com");
    entityManager.persist(student);
    entityManager.getTransaction().commit();
    entityManager.close();
    entityManagerFactory.close();
}

Reference

Comments