Training, Workshops, Softwareentwicklung

Hibernate Tutorial

Transaction Template

Da wir sehr oft Transaktionen benötigen, bietet es sich an, auch hierfür ein Template im PersistenceHelper anzulegen.

Transaction Template
public static void withTransaction(EntityManager em, Runnable runnable) {

    EntityTransaction transaction = em.getTransaction();
    try {
        transaction.begin();
        runnable.run();
        if (transaction.isActive()) {
            transaction.commit();
        }
    } catch (Exception x) {
        if (transaction.isActive()) {
            transaction.rollback();
        }
    }
}

Unser Test sieht dann so aus:

Test mit Template
doInHibernate(em -> {

    Customer customer = em.find(Customer.class, 1L);

    assertNotNull(customer);
    assertEquals("Buck", customer.getFirstname());
    assertEquals("Rogers", customer.getLastname());

    withTransaction(em, () ->
            customer.setFirstname("Alice")
    );

});