Non sto usando Spring, quindi sto creando un'istanza di EntityManager all'interno di una classe.Hibernate EntityManager, dovrebbe essere usato come un singleton?
Ho utilizzato il reverse engineering Hibernate-Eclipse per generare automaticamente le classi. Queste classi hanno tutte un'istanza di EntityManager.
Non sono sicuro al 100% di come Hibernate funzioni con EntityManager, quindi mi chiedo se è corretto che così tante istanze di questa classe (EntityManager) vengano create, ad esempio, ci saranno problemi con le transazioni?
Devo solo creare una classe separata che distribuisca un'istanza statica di un EntityManager per tutte le altre mie classi? O non importa?
EDIT: Vedo che c'è qualcosa chiamato @PersistenceContext, non sembra caricare il mio persistence.xml come bean nella variabile di istanza, questa funzione richiede primavera? (Ottengo un'eccezione di puntatore nullo, perché non è mai iniettato)
snip di codice da cui tento di usare @PersistenceContext
@PersistenceContext(unitName = "manager1")
private EntityManager entityManager;
mia 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>
È sufficiente rimuovere il modificatore di accesso privato (su "EntityManager") e testare? – Santosh