返回列表 发帖

[ORM框架] JPA和Hibernate

今天和学员闲聊时,有学员说他看到有人说JPA已经取代Hibernate、Hibernate就要“死”了。
听到这种说法,联想到以前也看过把JPA和Hibernate放在一起对比的文章,感到十分无奈。

随便写点吧,

JPA规范本质上就是一种ORM规范,注意不是ORM框架——因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则由用用服务器厂商来提供实现,JBoss应用服务器底层就以Hibernate作为JPA的实现。
既然JPA作为一种规范——也就说JPA规范中提供的只是一些接口,显然接口不能直接拿来使用。虽然应用程序可以面向接口编程,但JPA底层一定需要某种JPA实现,否则JPA依然无法使用。
从笔者的视角来看,Sun之所以提出JPA规范,其目的是以官方的身份来统一各种ORM框架的规范,包括著名的Hibernate、TopLink等。不过JPA规范给开发者带来了福音:开发者面向JPA规范的接口,但底层的JPA实现可以任意切换:觉得Hibernate好的,可以选择Hibernate JPA实现;觉得TopLink好的,可以选择TopLink JPA实现……这样开发者可以避免为使用Hibernate学习一套ORM框架,为使用TopLink又要再学习一套ORM框架。
下图是JPA和Hibernate、TopLink等ORM框架之间的关系:
a.png
2010-4-29 23:13


JPA和Hibernate的关系就像JDBC和JDBC驱动的关系,JPA是规范,Hibernate除了作为ORM框架之外,它也是一种JPA实现。
JPA怎么取代Hibernate呢?JDBC可以驱动JDBC驱动吗?
生命没有假期!
如果生命只剩下最后一秒,你可会想到我?

Don't dream away your time!

TOP

谢谢分享~
结合这个,偶google浏览了下下,有很多疑问,能帮忙解释下吗

Entity EJB是否也是属于JPA实现?
Hibernate先出现,然后SUN才制定了JPA规范?JPA规范制定时从Hibernate吸取了很多东西?
由于JPA规范诞生晚于Hibernate,所以Hibernate并不是标准JPA规范的标准实现,相反的,由于JPA规范是Entity EJB小组编写的,Entity EJB更是JPA规范的标准实现?
虽然Hibernate现在基本上是按JPA规范实现的。但是否也只是“基本上”而不是“完全”?

TOP

TOP

返回列表