據我所知,Hibernate有兩種實現爲什麼需要傳統的Hibernate?
- 實現JPA(2)(@實體@表註釋)
- 擴展到舊的(傳統的)休眠(無JPA),HSQL查詢沒有註釋
如果它是真的,爲什麼我們需要第二種類型的實現,而JPA是ORM規範? 如果您可以在比較API版本的同時進行比較,那麼可以更好地瞭解ORM的整個評估歷史記錄? 謝謝。
據我所知,Hibernate有兩種實現爲什麼需要傳統的Hibernate?
如果它是真的,爲什麼我們需要第二種類型的實現,而JPA是ORM規範? 如果您可以在比較API版本的同時進行比較,那麼可以更好地瞭解ORM的整個評估歷史記錄? 謝謝。
Hibernate是JPA規範之前的第一個ORM工具之一。它也是Java 5之前的開發者(當註釋在Java中可用時),所以所有的東西都是基於XML配置的,或者是XDoclet。
對Java EE進行了大規模的改造,Java EE引入了Spring和Hibernate,引入了JPA,但也是「通用」的,可以插入自己的實現。
hibernate的工作方式並沒有真正的區別,只是用什麼機制來配置它。 JPA註釋現在成爲標準,但只有在需要時纔可以使用XML。
有沒有這樣的事情兩個不同的 Hibernate的實現 - 只有一個官方實現。你可以通過註釋/ JPA特性來使用Hibernate,或者通過顯式的Hibernate類來使用Hibernate;但是底層的Hibernate庫將是相同的。
JPA只是Hibernate(和其他類似的庫)實現的接口。
歷史告訴我們,早在九十年代後期,有人發明了EJB。 Java社區普遍認爲沒有人喜歡它,許多人只是使用Hibernate或類似的框架。直到EJB 3.0時,EJB的持久性才根據Hibernate的工作原理進行了相當多的建模(注意EJB中還有其他類型的bean,而不僅僅是數據映射)。
據我所知,Hibernate的註釋是從3.2版本開始引入的;我並不是在談論JPA批註(javax.persistence包),而是可以在hibernate-annotations包中找到的特定於hibernate的批註。
幾乎所有你可以用hibernate特定的註釋做的事情,你現在也可以用JPA2做。如上所述,JPA只是一個接口,當你編寫代碼到這個接口時,你會更容易(至少在理論上)將底層的ORM提供者替換爲另一個,比如TopLink,OpenJPA或者Eclipselink(如果你需要)
hibernate-jpa-2.0-api-1.0.0.Final.jar覆蓋了它們嗎?它是最後一個嗎? –