JPA EntityManager, comment ça marche?
Désolé pour la question de noob, mais je vais avoir des problèmes avec JPA+Hibernate donc j'ai pensé que quelque chose n'est pas clair dans mon esprit.
J'ai quelques entités, disons A, B, C, D et j'ai codé AMethods, BMethods, CMethods, DMethods. Chacun des *Méthodes de classes contiennent EntityManager initialisation par EntityManagerFactory et certaines méthodes fondamentalement exécuter des requêtes. Je ne sais pas si je dois utiliser un pattern singleton (alors que j'ai un EntityManager par *Méthode de classe) ou si j'ai besoin d'ouvrir et de fermer l'EntityManager à chaque fois que j'exécute une requête ou je persiste/supprimer une entité... pouvez-vous m'aider??
source d'informationauteur Raffo
Vous devez vous connecter pour publier un commentaire.
Typiques de la JPA/Hibernate application, vous n'avez pas mis la persistance de la logique dans les classes d'entité eux-mêmes. C'est un grand changement dans la philosophie de conception par rapport aux anciens EJB 2.x applications. Au lieu de cela, de nombreuses applications de créer une couche d'Accès aux Données Objets, séparés par les entités--qui utilisent l'EntityManager cas de requête, charger et enregistrer des entités. Souvent, ce sont des singletons, et l'entité gestionnaire de cas à l'intérieur de la Bcm sont locaux au fil.
Si vous utilisez un framework comme Spring, la gestion de l'EntityManager les instances et les transactions sont complètement automatiques. Même avec les EJB 3, bien que je n'ai pas utilisé que sur un projet de grande envergure. Je suggère la lecture du Ressort de la documentation du chapitre sur Mapping Objet-Relationnel d'accès aux données. Même si vous ne voulez pas finir à l'aide de Printemps dans votre application, le chapitre donne quelques bons conseils sur la façon de structurer votre demande dans les couches chemin qui sépare la persistance de l'entité ont persisté. Bonne chance!
EntityManager est associée à un contexte de persistance. L'utilisation d'un singleton si tous de vos entités sont associées à un contexte.
Vous utilisez jpa sur le côté serveur,non? Si oui, vous pouvez initialisé EntityManager dans l'init méthodes init() sur les servlets.
juste comme ça!
interface publique ProtokollDAOService {
}
public class ProtokollDAOImpl implémente ProtokollDAOService {
private static final String PERSISTENCE_UNIT_NAME = "ProtokollManager";
privé EntityManagerFactory entityFactory;
}