我正在使用 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 ,对吗?
答案 0 :(得分:6)
我总是对这样的问题微笑一下 - 好问题,潜在的答案让我微笑。
如果问题确实存在,“我可以在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。
,这也是公平的我怀疑在某种程度上,包括我自己在内的每个人都觉得有必要分别回答“ no ”和“ yes ”。从内心的本能开始并向后工作以使其合理化是很诱人的,但最终它并没有改变现实。
您认为部分全玻璃在什么时候“为空”或“完整”?这是一个棘手的问题,因为部分装满的玻璃既不是空的也不是满的。如果你想考虑其中一个,那就是个人的区别。它并没有改变现实。
JPA是一个JavaEE规范(由EJB组创建),因此使用它绝对意味着您已经参与了一些Java EE。它是所有的JavaEE,没有。它也不是Java EE的 none 。
关于您可以使用的最诚实的措辞是“我在Java SE环境中使用Java EE功能。”
最终,没关系。使用你喜欢的。
你的玻璃部分装满了一些开源的Java EE优点。优秀。只要有开源的好人愿意免费装满你的杯子......我说喝了!
答案 1 :(得分:5)