使用Hibernate还是TomEE?

Som*_*bie 0 hibernate jpa java-ee apache-tomee

我有一个基于EJB的库,需要修改才能与Tomcat应用服务器兼容(即没有JaveEE).我在Hibernate上浏览了一下,感到非常困惑.

显然,有一个自然的Hibernate分支使用.cfg文件作为基础,符合Java SE,然后有一个基于JPA的Hibernate分支,它有条件地依赖于Java EE.我也觉得讨厌的一件事是显然不支持某些接口 - 例如CriteriaQuery.

所以我想,我必须去自然的Hibernate分支来实现摆脱Java EE的目标(考虑到差异,这很烦人).OTOH,也有TomEE可用,符合Tomcat,并且可能让我保持大部分代码不变

如果我能得到一些反馈,那就太好了.谢谢.

Dav*_*ins 12

一些要点:

  • Hibernate是一个JPA实现,三个之一.Hibernate的创建者Gavin King在JPA上工作非常努力.从应用程序中删除所有JPA用法正在向后移动,而不是向前移动.你只会失去便携性而无法获益.
  • 无论有没有TomEE,您都可以在Tomcat中使用JPA.

在讨厌Java EE并希望摆脱Java EE方面,它确实变成了一项不可能完成的任务.所有这些技术都是Java EE的一部分:

  • Servlet的
  • JSP
  • JSF
  • JPA
  • EJB
  • CDI/@Inject
  • JAX-RS
  • JAX-WS
  • JMS
  • Bean验证

将其中一些标记为JavaEE,而将JavaEE标记为JavaEE则是一种拒绝形式.它们都是作为JavaEE的一部分创建和发布的.

解决一些反JavaEE营销造成的混乱几乎是不可能的.真正具有破坏性的是,找到一个不使用3种或更多JavaEE技术的"非JavaEE"应用程序也几乎是不可能的.

为了回答"沉重"问题和"太多"问题,2010年创建了Web配置文件,以便在不牺牲可移植性的情况下创建更小的运行时.这包括:

  • Servlet的
  • JSP
  • JSF
  • JPA
  • EJB(lite)
  • CDI/@Inject
  • Bean验证

没有分布式交易,也没有繁重的东西.如果你堆栈Tomcat,Hibernate和Spring,你将包括:

  • Servlet的
  • JSP
  • JPA
  • @注入
  • Bean验证

无论您是否选择使用它们,这些API都将存在.

使用实现本身但没有使用标准API的价值很小.这是一场虚假的胜利.你仍然会使用相同的运行时代码,你将没有可移植性.