簡體   English   中英

我們可以在沒有休眠的情況下使用 jpa

[英]can we use jpa without hibernate

我是 JPA 的新手。

根據我的理解,JPA 是規范,Hibernate 實現 JPA 並提供附加功能以及 JPA 方法。

但是我正在閱讀 JPA 教程,其中使用EntityManager對象我們可以對數據執行 CRUD,而無需使用 Hibernate 庫!

所以任何人都可以請讓我知道

  1. 我可以使用EntityManager方法單獨使用 JPA,而不是使用 Hibernate 嗎?

請提及一些有用的鏈接或示例。

非常感謝回應。
謝謝。

你說得對 JPA 是一個規范。 Hibernate 和 EclipseLink 是它的幾個實現。

您必須指定持久性提供程序(Hibernate、EclipseLink)才能使用 JPA 實現。 持久性提供程序具有 JPA 規范的實現類。

你不能只使用 JPA,因為它是一個 API =),但是有很多 JPA 實現:

  1. Eclipse鏈接
  2. 對象數據庫

如果您不想使用 Hibernate(或任何其他 JPA 提供程序),那么您必須通過提供 javax.persistence.spi.PersistenceProvider 接口的實現來實現您自己的提供程序。 問題是,你為什么需要重新發明輪子? 如果您不喜歡 Hibernate,您可以使用眾多其他 JPA 提供程序之一進行選擇

僅當應用程序服務器已經有 JPA 實現時,JPA 才可以在沒有 JPA 提供程序(又名 Hibernate、EclipseLink 等)的情況下使用。 您很可能在教程中看到過在此類應用程序服務器上執行的演示。

雖然這個線程已經很老了,但我覺得值得分解一下。

JPA:這只是一個規范。 用更簡單的話來說。 接口集。

Hibernate、Eclipse Link: JPA 的眾多實現中的兩個。 除了為 JPA 規范提供基本實現之外,Hibernate 和 Eclipse Link 還提供了它們的附加功能。 您可以根據自己的需要選擇

春季數據:

  • 它提供了額外的抽象。
  • 當您使用 Hibernate/Eclipse Link 時,您仍然需要編寫一些樣板代碼。 通過使用 Spring JPA,您可以避免這種情況。
  • 需要注意的最重要的一點是 Spring 數據由於 Springboot 的 Opinionated 性質而默認使用 Hibernate。 如果您願意,可以更改默認行為。
  • 當您在使用 Spring JPA(具有默認配置)的 Springboot 項目中運行以下命令時,您將看到正在使用 Hibernate jar。

Maven: mvn dependency:tree

Gradle: gradle dependencies

您可以單獨使用 JPA 而不使用 Hibernate,並且 Before 應該了解 Hibernate 與 JPA 之間的要點,如下所示。

休眠

  1. Hibernate 是一個 ORM 框架,它支持完整的 ORM 並使用 JPA 功能。
  2. 二級緩存可用,性能非常好
  3. 它使用 NHibernate 工具支持 .Net
  4. 它生成 HQL(Hibernate Query Language)

日本特許經營協會

  1. JPA 是在 J2EE 1.5 中發布的 EJB 規范的一部分,這將用於 Java 和 J2EE
  2. 二級緩存不可用,因此性能不佳。
  3. 它不支持 .Net
  4. 它生成 JPQL(Java Persistence Query Language)
  5. 在任何像 Hibernate 這樣的持久化提供程序之上,我們可以使用 JPA。

您不能單獨使用 JPA。 JPA 是一種規范,它定義了用於對象-關系映射和管理持久對象的 API,您需要一個 JPA 提供程序來實現它,例如 Hibernate、EclipseLink。

不,您不能單獨使用 JPA 執行 CRUD 操作。 由於 JPA 只是一個規范,您需要實現來執行數據庫操作。 實現由 Hibernate、EclipseLink、Ibatis 等提供。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM