EntityManagerProducer.java

package org.flasby.transactions;

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Disposes;
import jakarta.enterprise.inject.Produces;
import jakarta.persistence.EntityManager;
import jakarta.persistence.Persistence;
import lombok.extern.slf4j.Slf4j;

@ApplicationScoped
@Slf4j
public class EntityManagerProducer {

  @Produces
  @MyDB
  public EntityManager createEntityManager() {
    log.info("Creating EntityManager");
    return Persistence.createEntityManagerFactory("H2").createEntityManager();
  }

  public void close(@Disposes @MyDB EntityManager entityManager) {
    log.info("Closing EntityManager");
    entityManager.close();
  }
}