不确定我是否理解TransactionAwarePersistenceManagerFactoryProxy

时间:2013-01-31 22:18:08

标签: java spring persistence dao jdo

我正在尝试在我的Spring项目中使用org.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxy,但我不确定如何使用它或者它是否正是我正在寻找的。我意识到它可以帮助我的DAO使用简单的JDO PersistenceManagerFactory。另一个问题是:如果代理没有正确完成会发生什么?我还可以使用它来访问我的工厂来创建一个事务感知持久性管理器吗?如果工厂管理的对象是单例,这会改变吗?为什么不直接访问PersistenceManagerFactory?或许PersistenceManagerFactoryUtils.getPersistenceManager更适合我的需求? getObject可以返回null吗?

1 个答案:

答案 0 :(得分:20)

答案可直接在documentation

上找到
  

我意识到它可以帮助我的DAO使用普通的JDO PersistenceManagerFactory。

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

  

我是否仍可以使用它来访问我的工厂以创建事务感知持久性管理器

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

  

如果工厂管理的对象是单件,这会改变一些事情吗?为什么不直接访问PersistenceManagerFactory?

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