在一个事务中混合使用JDO(DataNucleus)和JPA(Hibernate)对象

时间:2012-10-18 10:23:52

标签: hibernate jpa jdo datanucleus

这会成为一个问题吗?

我有一个遗留系统,它使用javax.jdo API和XML映射来处理从DB中写入/读取它的对象。

我还有一些代码扩展了这个系统,这部分是使用JPA和Hibernate(通过注释,使用Spring管理的声明式事务)。

我想让他们在同一个保护伞下,所以我可以更好地管理交易。我想重写我的代码以使用DataNucleus,但我想坚持使用JPA(所以我不必更改映射等等。)。

所以问题是:是否有可能在项目的两个部分混合使用JPA和JDO并跨越混合交易?或者我必须只选择一种方法吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

这在某些情况下实际上并不起作用,基本上hibernate和数据核都在持久化类上使用自己生成的代理。因此,当您尝试持久化时,hibernate中生成的代理类将无法被数据核识别,因为它是一个代理类。

答案 1 :(得分:1)

DataNucleus显然允许您使用JDO或JPA注释(或同时使用IIRC),并使用JDO或JPA使用持久性(因此JPA注释使用JDO PersistenceManager,反之亦然)。可能如果你有应用程序的一部分的PM和应用程序的另一部分的EM,则交易是分开的。