Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:modul:ffit:3-jahr:java:learningunits:lu05:c [2025/09/16 10:16] apeterde:modul:ffit:3-jahr:java:learningunits:lu05:c [2025/09/18 02:29] (aktuell) apeter
Zeile 56: Zeile 56:
 </code> </code>
  
-{{:de:modul:ffit:3-jahr:java:learningunits:lu05:uml_generic_type_example_1.png|}}+{{:de:modul:ffit:3-jahr:java:learningunits:lu05:uml_generic_type_example_2.png|}}
  
 +<code java>
 +public abstract class AbstractPersistor<T> implements AutoCloseable {
  
 +    protected final Logger log = LoggerFactory.getLogger(this.getClass());
 +    private final EntityManagerFactory emf;
  
 +    protected AbstractPersistor() {
 +        this.emf = Persistence.createEntityManagerFactory("localPU", Config.getProperties());
 +    }
 +
 +    public void save(T t) {
 +        executeTransaction(em -> em.merge(t));
 +    }
 +
 +    protected void executeTransaction(Consumer<EntityManager> action) {
 +        try (EntityManager em = emf.createEntityManager()) {
 +            try {
 +                em.getTransaction().begin();
 +                action.accept(em);
 +                em.getTransaction().commit();
 +            } catch (RuntimeException e) {
 +                if (em.getTransaction().isActive()) {
 +                    em.getTransaction().rollback();
 +                }
 +                log.error("Error during transaction:", e);
 +                throw e;
 +            }
 +        }
 +    }
 +
 +    @Override
 +    public void close() {
 +        if (emf != null && emf.isOpen()) {
 +            emf.close();
 +            log.info("EntityManagerFactory closed");
 +        }
 +    }
 +
 +</code>
 +
 +<code java>
 +try (var bookPersistor = new BookPersistor()){
 +    bookPersistor.save(myBook);
 +}
 +</code>
  • de/modul/ffit/3-jahr/java/learningunits/lu05/c.1758010596.txt.gz
  • Zuletzt geändert: 2025/09/16 10:16
  • von apeter