當我使用@Entity註釋一個類並嘗試解析依賴關係時,我可以選擇兩個不同的包之間的包,javax.persistence.Entity和org.hibernate.annotations.EntityJPA實體和Hibernate實體之間的區別
javax包是JPA的實體註釋,但爲什麼有一個hibernate實體註釋,它與JPA的註解有什麼不同呢?它只是一個允許定義更多屬性的擴展嗎?
當我使用@Entity註釋一個類並嘗試解析依賴關係時,我可以選擇兩個不同的包之間的包,javax.persistence.Entity和org.hibernate.annotations.EntityJPA實體和Hibernate實體之間的區別
javax包是JPA的實體註釋,但爲什麼有一個hibernate實體註釋,它與JPA的註解有什麼不同呢?它只是一個允許定義更多屬性的擴展嗎?
org.hibernate.annotations.Entity
有一些額外的屬性,javax.persistence.Entity
尚未標準化。額外的功能只有在直接使用hibernate的AnnotationConfiguration
或hibernate是JPA提供程序時纔有效。
從
the FAQ:
編輯:新的鏈接
the specific question:
編輯:新的鏈接the answer:
我使用@ org.hibernate.annotations.Entity,並得到一個未知實體例外
總是導入@ javax.persistence.Entity
@ org.hibernate.annotations.Entity完成@ javax.persistence.Entity但不補發
例如,有一個名爲optimisticLock
的屬性,它告訴Hibernate是否使用標準版本列或在更新時比較所有列。此行爲不在JPA規範中,因此爲了配置它,您必須使用在其自己的註釋中找到的特定於hibernate的擴展。
像這樣:
@Entity
@org.hibernate.annotations.Entity(optimisticLock=OptimisticLockType.ALL)
public class MyEntity implements Serializable {
...
}
我不確定差異,但我確定如果您的類路徑中有Hibernate jar,那麼您使用的是Hibernate JPA。 Hibernate提供了JPA的實現。即使您使用的是使用Hibernate JPA的javax.persistence包。
區別只在於命名。他們可能會在Hibernate包空間和javax包空間中提供相同的類。
@在你的項目中使用,如果假設你想使用我們需要改變的代碼JDBC模板或ibatis的org.hibernate.annotations。如果我們使用javax.persistence,則不需要更改代碼。這是org.hibernate.annotations和javax persistence之間的主要區別