web-dev-qa-db-fra.com

Je ne sais pas si je comprends TransactionAwarePersistenceManagerFactoryProxy

J'essaie d'utiliser le org.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxy dans mon projet Spring, mais je ne sais pas comment l'utiliser ni si c'est exactement ce que je recherche. Je réalise que cela peut aider mes DAO à fonctionner avec un simple JDO PersistenceManagerFactory. Une autre question est la suivante: que se passera-t-il si le proxy n’est pas correctement fabriqué? Puis-je quand même l'utiliser pour accéder à mon usine afin de créer un gestionnaire de persistance sensible aux transactions? Si l'objet géré par l'usine est un singleton, cela change-t-il les choses? Pourquoi ne pas simplement accéder directement à PersistenceManagerFactory? Peut-être que PersistenceManagerFactoryUtils.getPersistenceManager serait plus adapté à mes besoins? getObject peut-il renvoyer null?

189
megazord

Les réponses sont directement disponibles sur documentation

Je sais que cela peut aider mes DAO à fonctionner avec un JDO PersistenceManagerFactory ordinaire.

Oui. Le proxy TransactionAwarePersistenceManagerFactoryProxy permet aux DAO de travailler avec une simple référence JDO PersistenceManagerFactory tout en participant à la gestion des ressources et des transactions de Spring (ou d'un serveur J2EE). Vous pouvez sûrement l'utiliser dans votre application. Mais sans connaître vos besoins exacts, nous ne pouvons pas confirmer davantage.

Puis-je quand même l'utiliser pour accéder à mon usine afin de créer un gestionnaire de persistance sensible aux transactions

Les DAO peuvent basculer de manière transparente entre un JNDI PersistenceManagerFactory et ce proxy pour un PersistenceManagerFactory local.

Si l'objet géré par l'usine est un singleton, cela change-t-il les choses? Pourquoi ne pas simplement accéder directement à PersistenceManagerFactory?

Il est généralement préférable d'écrire vos DAO basées sur JDO avec JdoTemplate de Spring, offrant des avantages tels que des exceptions d'accès aux données cohérentes au lieu d'exceptions JDO au niveau de la couche DAO. Cependant, la gestion des ressources et des transactions de Spring (et l'injection de dépendance) fonctionneront également pour les DAO écrites sur l'API JDO standard.

20
Chand Priyankara