JPA提供了Hibernate功能的子集,但是EJB3提供了Hibernate无法解决的其他服务(例如Web服务,EJB,Timer服务)
与Hibernate相比,JPA具有以下优点:
- 标准化API
- 供应商独立性(可以在Hibernate,Toplink,OpenEJB等之间切换)
Hibernate具有以下优点:
- 广泛使用
- 事实标准
- Spring,Grails等的直接支持
- 可能更好的工具支持
- 比JPA更多的功能
您可以做的是使用JPA在EJB中编写应用程序,然后在必要时使用特定于Hibernate的功能。或者,如果您不关心标准化和供应商锁定,则只需使用普通的Hibernate进行持久化即可。实际上,您不太可能在Hibernate和其他提供程序之间切换,但是确实发生了。



