几点:
- Hibernate 是一种 JPA 实现,是三种实现之一。Gavin King,Hibernate 的创建者,在 JPA 上工作非常努力。从应用程序中删除所有 JPA 使用是向后移动,而不是向前移动。你只会失去便携性而没有收获。
- 您可以在有或没有 TomEE 的情况下在 Tomcat 中使用 JPA。
就讨厌 Java EE 并想摆脱它而言,这确实成为了一项不可能完成的任务。所有这些技术都是 Java EE 的一部分:
- 小服务程序
- JSP
- JSF
- JPA
- EJB
- CDI / @注入
- JAX-RS
- JAX-WS
- 管理系统
- Bean 验证
将其中一些标记为 JavaEE 而将一些标记为非 JavaEE 是一种否定形式。它们都是作为 JavaEE 的一部分创建和发布的。
解决一些反 JavaEE 营销所造成的混乱几乎是不可能的。真正具有破坏性的是,几乎不可能找到不使用 3 种或更多 JavaEE 技术的“非 JavaEE”应用程序。
为了解决“重”问题和“太多”问题,2010 年创建了 Web Profile,以便可以在不牺牲可移植性的情况下创建更小的运行时。这包括:
- 小服务程序
- JSP
- JSF
- JPA
- EJB(精简版)
- CDI / @注入
- Bean 验证
没有分布式事务,也没有繁重的东西。如果您堆叠 Tomcat、Hibernate 和 Spring,您将包括:
- 小服务程序
- JSP
- JPA
- @注入
- Bean 验证
无论您是否选择使用这些 API,它们都将存在。
使用实现本身但不使用标准 API 几乎没有价值。这是一场虚假的胜利。您仍将使用相同的运行时代码,只是没有可移植性。