/* * Copyright @ 2013 CurisTEC, S.A.S. All Rights Reserved. */ package net.curisit.securis.ioc; import jakarta.annotation.PostConstruct; import jakarta.enterprise.context.ApplicationScoped; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** * EntityManagerProvider *

* Simple provider for JPA {@link EntityManager} instances using the * persistence unit "localdb". Creates an {@link EntityManagerFactory} * once per application and returns a fresh {@link EntityManager} per call. * * Note: * - Callers are responsible for closing the obtained EntityManager. * * @author JRA * Last reviewed by JRA on Oct 5, 2025. */ @ApplicationScoped public class EntityManagerProvider { private static final Logger log = LogManager.getLogger(EntityManagerProvider.class); /** * entityManagerFactory

* Application-wide EMF built from persistence.xml PU "localdb". */ //private final EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("localdb"); private EntityManagerFactory entityManagerFactory; @PostConstruct public void init() { try { log.info("Initializing EntityManagerFactory with persistence unit 'localdb'"); entityManagerFactory = Persistence.createEntityManagerFactory("localdb"); log.info("EntityManagerFactory initialized correctly: {}", entityManagerFactory); } catch (Exception e) { log.error("Error creating EntityManagerFactory for persistence unit 'localdb'", e); entityManagerFactory = null; } } /** * getEntityManager

* Create a new {@link EntityManager}. * * @return a new EntityManager; caller must close it */ public EntityManager getEntityManager() { try { if (entityManagerFactory == null) { log.error("EntityManagerFactory is null"); return null; } EntityManager em = entityManagerFactory.createEntityManager(); log.info("Created EntityManager: {}", em); return em; } catch (Exception e) { log.error("Error creating EntityManager", e); return null; } } }