我总是对这样的问题微笑——好问题,潜在的答案让我微笑。
Java SE 中的 JPA
如果问题是真的,“我可以在 Java SE 中使用 JPA 吗?”答案很明显,是的。 Java SE 有一个引导 API。它实际上是 JPA 的一个子集,不包含容器管理 (JTA) EntityManager,但它运行良好且非常棒。
对于某些人来说,这是“不是 JavaEE”。很公平。
Java SE 中的 EJB
如果我们问同样的关于 EJB 的问题,“我可以在 Java SE 中使用 EJB 吗?”答案也是,是的。 Java SE 有一个相同的引导 API。它是在 JPA API 之后建模的,也是一个子集,并且根据您选择的实现同样轻巧。
很少有人会认为这是“不是 JavaEE”。只要您回答 JPA 是 JavaEE,这也是公平的。
那么,Java EE 与否?
我怀疑每个人在某种程度上,包括我自己,都觉得有必要分别回答“no”和“yes”。从直觉开始并向后努力使其合理化是很诱人的,但最终它不会改变现实。
您在什么时候认为部分满的玻璃杯是“empty”或“full”?这是一个棘手的问题,因为部分装满的玻璃杯既不是空的也不是满的。如果您想考虑其中一个,那是个人区别。它不会改变现实。
JPA 是一个 JavaEE 规范(由 EJB 小组创建),因此使用它绝对意味着您涉及到一些 Java EE。是JavaEE的全部吗,不。它也不是 Java EE 的none。
您可以使用的最诚实的措辞是“我在 Java SE 环境中使用 Java EE 功能。”
最终,这并不重要。用你喜欢的。
你的杯子里装满了一些开源 Java EE 的优点。出色的。只要开源领域有好人愿意免费为您加油,我说喝光!