【问题标题】:Unsure if I understand TransactionAwarePersistenceManagerFactoryProxy不确定我是否理解 TransactionAwarePersistenceManagerFactoryProxy
【发布时间】:2013-01-16 04:01:56
【问题描述】:

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

【问题讨论】:

  • 大声笑!抱歉,看到对象名我差点哭了。
  • 亲爱的孩子们,这就是 Java 应该停止吸毒的原因。
  • 你知道你在 Java 世界里已经太久了,像这样的名字似乎不那么不合理......!
  • 伙计们。嘿,伙计们,听着。你又犯了新手的错误。 Spring 框架不是 Java,Java 也不是 Spring 框架。不要混淆他们。
  • 关于最初的问题:这是我真正欣赏的那种高质量的拖钓。

标签: java spring persistence dao jdo


【解决方案1】:

答案可直接通过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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2011-05-05
    • 2020-11-22
    • 2011-01-29
    相关资源
    最近更新 更多