天天看點

JPA和Hibernate比較

轉自:http://wenku.baidu.com/link?url=dXfHzZYmCWRI2y-MqGtovPsmt8-TAJ2r38mZEL1m43B8WxW243EB7_b6HqzotH20ZMHLNaqcx9dQozsqKT69FbKGvhzB-VplAI2so5Y79zq

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架構之間的關系:

JPA和Hibernate比較

JPA和Hibernate的關系就像JDBC和JDBC驅動的關系,JPA是規範,Hibernate除了作為ORM架構之外,它也是一種JPA實作。

JPA怎麼取代Hibernate呢?JDBC可以驅動JDBC驅動嗎?

繼續閱讀