JPA和Hibernate關係之淺談
首先我們來看一下百度百科關於JPA的解釋,JPA全稱Java Persistence API。JPA通過JDK 5.0註解或XML描述物件-關係表的對映關係,並將執行期的實體物件持久化到資料庫中。JPA的總體思想和現有Hibernate、TopLink、JDO等ORM框架大體一致。總的來說,JPA包括以下3方面的技術:ORM對映元資料,API,查詢語言。由此可知,Jpa是一種規範,而Hibernate是它的一種實現。除了Hibernate,還有EclipseLink(曾經的toplink),OpenJPA等可供選擇,所以使用Jpa的一個好處是,可以多實現。但是我在play中定義Model時,使用的是jpa的annotations,比如javax.persistence.Entity, Table, Column, OneToMany等等。但它們提供的功能基礎,有時候想定義的更細一些,難免會用到Hibernate本身的annotation。
JPA規格 定義了javax.persistence包中的JPA註釋。Hibernate不僅實現了JPA規範,而且擴充套件了它,增加了更多的功能。所以,hibernate建立自己的註釋,它們只是使用Hibernate功能來擴充套件JPA註釋,並將這些註釋放在包中org.hibernate.annotations
如果沒有為該JPA註釋(例如@OneToMany和@ManyToOne)新增指定的Hibernate特徵,Hibernate將不會在其org.hibernate.annotations包中進行註釋,javax.persistence並且必須根據JPA規範