J'ai quelques questions concernant l'utilisation du gestionnaire d'entités dans un environnement JavaSE. J'utilise le modèle de référentiel pour effectuer mes opérations CRUD sur la base de données. Il y aura une classe de dépôt de base comme ceci:JPA 2 - Utilisation de l'EntityManager dans JavaSE - quelques questions
public class Repository<T> implements IRepository<T> {
private EntityManager em;
private String persistenceUnitName;
public Repository(String persistenceUnitName) {
this.persistenceUnitName = persistenceUnitName;
}
@Override
public T find(Class<T> type, Object id) {
return em.find(type, id);
}
private EntityManager getEntityManager() {
if (this.em == null) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnitName);
em = emf.createEntityManager();
}
return em;
}
...
...
}
Je vais donc avoir des classes comme EmployeeRepository qui hériteront Repository. Ces classes de référentiel seront créées dans ma couche de service.
Est-ce un bon moyen d'initialiser le gestionnaire d'entités? Je commence à penser que ce n'est pas - il semble que vous ne devriez avoir qu'un seul gestionnaire d'entité par unité de persistance? Où, comme dans ce cas, vous auriez un gestionnaire d'entité pour chaque référentiel que vous créez ... Comment vous assureriez-vous de n'avoir qu'un seul gestionnaire d'entité par unité de persistance? De plus, j'ai remarqué que les méthodes d'usine du gestionnaire d'entité et du gestionnaire d'entité ont une méthode proche - quand faut-il les appeler? Sur un serveur, terminez l'événement?
Si vous connaissez de bonnes sources sur l'utilisation de JPA dans JavaSE, j'apprécierais l'info.
Merci!
Je suis un peu en retard à ce sujet, mais savez-vous que si vous utilisez la persistance gérée par conteneur, et que vous recherchez une unité de persistance par son nom JNDI donné dans: EntityManager manager = (EntityManager) context.lookup (jndiName);), est-ce que EM retourné réellement un nouveau EM à chaque fois? Est-ce une EMF derrière la scène qui envoie des EM, ou est-ce juste une EM globale liée à un seul thread? –
djb