不确定我是否理解 TransactionAwarePersisenceManagerFactoryProxy

我试图在我的 Spring 项目中使用 org.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxy,但是我不确定如何使用它,或者它是否正是我想要的。我意识到它可以帮助我的 DAO 与一个普通的 JDO PersistenceManagerFactory一起工作。另一个问题是: 如果代理不能正确生成,会发生什么情况?我是否仍然可以使用它访问我的工厂来创建支持事务的持久化管理器?如果工厂管理的对象是一个单例对象,这会改变什么吗?为什么不直接访问 PersisenceManagerFactory 呢?也许 PersistenceManagerFactoryUtils.getPersistenceManager更适合我的需要?getObject可以返回空吗?

28148 次浏览

答案可直接在 文件上找到

我意识到它可以帮助我的 DAO 与一个普通的 JDO PersisenceManagerFactory 一起工作。

是的。 TransactionAwarePersisenceManagerFactoryProxy 代理允许 DAO 使用普通的 JDO PersisenceManagerFactory 引用,同时仍然参与 Spring (或 J2EE 服务器)的资源和事务管理。 你当然可以在你的应用程序中使用它。但是在不知道你的确切需求的情况下,我们不能进一步确认。

我仍然可以使用它访问我的工厂来创建一个事务感知的持久化管理器吗

DAO 可以在 JNDI PersisenceManagerFactory 和本地 PersisenceManagerFactory 的代理之间无缝切换。

如果工厂管理的对象是一个单例对象,这会改变什么吗?为什么不直接访问 PersisenceManagerFactory 呢?

通常最好使用 Spring 的 JdoTemplate 编写基于 JDO 的 DAO,这样可以在 DAO 层提供一致的数据访问异常,而不是 JDOException。然而,Spring 的资源和事务管理(以及依赖注入)也适用于针对普通 JDO API 编写的 DAO。