J'essaie d'utiliser la fonction org.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxy
dans mon projet Spring, mais je ne sais pas comment l'utiliser ou si c'est exactement ce que je recherche. Je sais qu'il peut aider à faire fonctionner mes DAO avec un simple JDO PersistenceManagerFactory
. Une autre question est : que se passe-t-il si le proxy n'est pas fait correctement ? Est-ce que je peux toujours l'utiliser pour accéder à ma fabrique pour créer un gestionnaire de persistance sensible aux transactions ? Si l'objet géré par la fabrique est un singleton, cela change-t-il les choses ? Pourquoi ne pas accéder directement à la PersistenceManagerFactory ? Peut-être PersistenceManagerFactoryUtils.getPersistenceManager
serait plus adapté à mes besoins ? Peut-on getObject
return null ?
Réponse
Trop de publicités?Les réponses sont directement disponibles sur la documentation
Je réalise que cela peut aider à faire fonctionner mes DAO avec un simple JDO PersistenceManagerFactory.
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 certainement l'utiliser dans votre application. Mais sans connaître vos besoins exacts, nous ne pouvons pas confirmer davantage.
Puis-je encore l'utiliser pour accéder à ma fabrique afin de créer un gestionnaire de persistance prenant en compte les transactions ?
Les DAO pourraient basculer de manière transparente entre un PersistenceManagerFactory JNDI et ce proxy pour un PersistenceManagerFactory local.
Si l'objet géré par la fabrique est un singleton, cela change-t-il les choses ? Pourquoi ne pas accéder directement à la PersistenceManagerFactory ?
Il est généralement préférable d'écrire vos DAO basés sur JDO avec le JdoTemplate de Spring, qui offre 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épendances) fonctionne également pour les DAO écrits avec l'API JDO classique.