No estoy usando Spring, así que estoy creando una instancia de EntityManager dentro de una clase.Hibernate EntityManager, ¿se supone que debe usarse como singleton?
Usé ingeniería inversa Hibernate-Eclipse para generar automáticamente las clases. Todas estas clases tienen una instancia de EntityManager.
No estoy 100% seguro de cómo funciona Hibernate con EntityManager, así que me pregunto si está bien que se realicen tantas instancias de esta clase (EntityManager), por ejemplo, ¿habrá problemas con las transacciones?
¿Debo simplemente hacer una clase separada que distribuya una instancia estática de un EntityManager para todas mis otras clases? ¿O no importa?
EDIT: Veo que hay algo llamado @PersistenceContext, no parece cargar mi persistence.xml como un bean en la variable de instancia, ¿esta característica requiere la primavera? (Me da excepción de puntero nulo, porque nunca se inyectó)
recorte de código desde donde intento utilizar @PersistenceContext
@PersistenceContext(unitName = "manager1")
private EntityManager entityManager;
mi persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="manager1" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="mypassword"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/ptbrowserdb"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
</properties>
</persistence-unit>
</persistence>
¿Puedes simplemente eliminar el modificador de acceso privado (en 'EntityManager') y probar? – Santosh