没有JavaEE 6可以使用JPA 2.0吗?

时间:2012-02-23 18:46:48

标签: java java-ee jpa-2.0 java-ee-6 openjpa

我正在使用 OpenJPA 2.1 (实现 JPA 2.0 )作为命令行实用程序。我正在使用 JPA 2.0 的新类。 我的编译目标是 Java SE 1.6

OpenJPA 2.1 附带所有 JPA 2.0 javax.persistence.*接口/实现。

我是否可以声称我的实用程序不依赖 JavaEE 6

我的理解是 JavaEE 6 是标准的集合。因此,在任何其他随机标准集方面都没有区别。因此 JavaEE 6 依赖于 JPA 2.0 ,但 JPA 2.0 不依赖于 JavaEE 6 ,对吗?

2 个答案:

答案 0 :(得分:6)

我总是对这样的问题微笑一下 - 好问题,潜在的答案让我微笑。

Java SE中的JPA

如果问题确实存在,“我可以在Java SE中使用JPA吗?”答案很清楚,是的。有一个用于Java SE的bootstrapping API。它实际上是JPA的一个子集,不包含容器管理的(JTA)EntityManagers,但它工作正常并且很棒。

对某些人来说,这是“ not JavaEE ”。很公平。

<2> Java SE中的EJB

如果我们问关于EJB的相同问题,“我可以在Java SE中使用EJB吗?”答案也是,是的。 Java SE有一个相同的bootstrapping API。它是在JPA API之后建模的,也是一个子集,同样轻,取决于您选择的实现。

很少有人会认为这是“而非JavaEE ”。只要您回答JPA JavaEE。

,这也是公平的

那么,Java EE还是不?

我怀疑在某种程度上,包括我自己在内的每个人都觉得有必要分别回答“ no ”和“ yes ”。从内心的本能开始并向后工作以使其合理化是很诱人的,但最终它并没有改变现实。

您认为部分全玻璃在什么时候“为空”或“完整”?这是一个棘手的问题,因为部分装满的玻璃既不是空的也不是满的。如果你想考虑其中一个,那就是个人的区别。它并没有改变现实。

JPA是一个JavaEE规范(由EJB组创建),因此使用它绝对意味着您已经参与了一些Java EE。它是所有的JavaEE,没有。它也不是Java EE的 none

关于您可以使用的最诚实的措辞是“我在Java SE环境中使用Java EE功能。”

最终,没关系。使用你喜欢的。

你的玻璃部分装满了一些开源的Java EE优点。优秀。只要有开源的好人愿意免费装满你的杯子......我说喝了!

答案 1 :(得分:5)

JPA 2.0是一个独立的standard,您可以在没有应用程序服务器的独立Java应用程序中使用它。事实上,许多人在中使用JPA - 这不需要任何容器运行。