【发布时间】:2011-08-04 05:26:34
【问题描述】:
如果这是一个显而易见的问题,我深表歉意,但我正在阅读 Java EE 6 教程,同时阅读了几本书,并且很难将所有信息关联起来。
我在 JDO 和 JPA 之间做一个小比较。我知道使用 JPA 和应用程序服务器,我可以很容易地说:
@Stateless
public class MyEJB {
@PersistenceContext
private EntityManager em;
// methods that use the JPA entity manager...
}
然后,在我自己的方法中,我可以使用em 来获取 JPA EntityManager。我编写的任何方法都会(默认情况下)自动创建或加入现有事务。
我希望在 JDO 中获得这么多的乐趣。我怀疑正确的答案是使用 CDI。我不确定那会是什么样子,也许是这个?
@Stateless
public class MyEJB {
@Resource
private PersistenceManager em;
// methods that use the JDO persistence manager...
}
但这种猜测给我留下的问题多于答案。
- 如何告诉 Glassfish 或任何我的 Java EE 6 应用服务器,如何制作 PersistenceManagerFactory 以及如何使用它为我生成 PersistenceManager?
- 我必须做一些特别的事情来实现 JTA 吗?如果可能的话,我想使用容器管理的事务。
- 我可以将其设置为使用 JNDI 来查找我的 JDBC 连接吗?
- 是否需要存在魔法文件才能触发我想要的行为? (我在看你,空的persistence.xml)
除了对 JDO 和可能的 DataNucleus 直接施加依赖外,我宁愿将其保留为 Java EE 6,而不涉及 Spring 或其他第三方库,但我宁愿选择第三方库。
谢谢!
【问题讨论】: