EJB 3或Hibernate 3

ehs*_*n7b 12 hibernate jpa java-ee ejb-3.0

关于Java EE Web应用程序将由完整的Java EE应用程序服务器提供服务,例如GlassFish,这是最好的ORM解决方案?EJB 3Hibernate 3 为什么?

Arj*_*jms 29

这两者完全不同.

EJB3是一个组件模型,它本身与ORM没有直接关系.它有助于轻松管理事务,并使您可以从JPA轻松访问实体管理器,JPA是Java EE中的标准化ORM解决方案.

Hibernate (3)确实是一个ORM解决方案,并且它实现了一个实现JPA的解决方案.

因此,更合乎逻辑的问题是,是使用标准化的JPA接口,还是直接使用Hibernate核心API.然后一个后续问题可能是使用JPA独立,还是与EJB 3结合使用.

答案取决于您需要的内容,但通常将JPA与EJB 3结合使用是最简单的解决方案.使用JPA或Hibernate独立版需要更详细的代码,并且您需要手动管理事务,这可能很麻烦.

JPA与Hibernate是另一场辩论.JPA具有标准化接口的优点,因此更多开发人员可能会熟悉它.另一方面,本机Hibernate API总是JPA的超级集合,因此提供更多功能.

通常,开发人员主要将其代码基于JPA,然后在有意义的情况下使用一些特定于Hibernate的注释或API调用.在99.99%的情况下,支持这种混合API使用.

还要注意Glassfish EclipseLink与Hibernate 捆绑在一起,而不是捆绑在一起.EclipseLink可以与Hibernate相媲美,但是它已经超过了十年.Hibernate从EclipseLink(后来称为TopLink)中花了很多钱.

另请参阅我给出的类似问题的答案:通过JPA Vs访问数据库表.Web应用程序中的EJB


top*_*hef 5

你问的是哪个API更好:EJB3(JPA)还是Hibernate?我说是因为你问的是EJB3 JPA(仅限API)和Hibernate(实现和API).因此,要比较苹果和苹果,您需要比较API.您可以选择标准(JPA)和更强大的专有API(Hibernate).

但是通过选择JPA,还有另一种选择:实现它.通过选择Hibernate实现,您可以基本上丢弃您的问题,因为JPA和Hibernate都可用.

所以你的问题会改变:我应该选择哪个JPA实现(在Hibernate,EclipseLink,OpenJPA,DataNucleus等之间)?...