我正在尝试在我的 Spring 项目中使用 org.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxy
,但我不确定如何使用它或者它是否正是我想要的。我意识到它可以帮助我的 DAO 与普通的 JDO PersistenceManagerFactory
一起工作。另一个问题是:如果代理没有正确制作会发生什么?我仍然可以使用它来访问我的工厂以创建事务感知持久性管理器吗?如果工厂管理的对象是单例,这会改变吗?为什么不直接访问 PersistenceManagerFactory 呢?也许 PersistenceManagerFactoryUtils.getPersistenceManager
会更适合我的需要? getObject
可以返回 null 吗?
最佳答案
答案可直接访问 documentation
I realize it can help make my DAOs work with a plain JDO PersistenceManagerFactory.
是的。 TransactionAwarePersistenceManagerFactoryProxy 代理允许 DAO 使用普通的 JDO PersistenceManagerFactory 引用,同时仍参与 Spring(或 J2EE 服务器)的资源和事务管理。 你肯定可以在你的应用程序中使用它。但在不了解您的确切需求的情况下,我们无法进一步确认。
Can I still use it to access my factory to create a transaction aware persistence manager
DAO 可以在 JNDI PersistenceManagerFactory 和本地 PersistenceManagerFactory 的代理之间无缝切换。
If the object managed by the factory is a singleton, does this change things? Why not just access the PersistenceManagerFactory directly?
通常最好使用 Spring 的 JdoTemplate 编写基于 JDO 的 DAO,这样可以提供诸如一致的数据访问异常而不是 DAO 层的 JDOExceptions 之类的好处。但是,Spring 的资源和事务管理(以及依赖注入(inject))也适用于针对普通 JDO API 编写的 DAO。
关于java - 不确定我是否理解 TransactionAwarePersistenceManagerFactoryProxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14636178/