首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JPA 簡介:Java 持久化 API 核心概念與優勢

     編輯:Java 相關知識

JPA 概述

JPA(Java Persistence API)透過 JDK 5.0 註解或 XML 描述物件-關聯表映射關係,將執行期實體物件持久化到資料庫中。

起源

Sun 引入 JPA ORM 規範有兩大原因:一、簡化現有 Java EE 和 Java SE 應用的物件持久化開發工作;二、整合 ORM 技術,實現統一標準。

JPA 由 EJB 3.0 專家組開發,作為 JSR-220 實現一部分。但不限於 EJB 3.0,可用於 Web 應用、甚至桌面應用。JPA 宗旨為 POJO 提供持久化標準規範,脫離容器獨立運行、方便開發測試的理念已深入人心。目前 Hibernate 3.2、TopLink 10.1.3、OpenJPA 均提供 JPA 實現。

JPA 核心技術三大面向

  1. ORM 映射元資料:支援 XML 和 JDK 5.0 註解兩種形式,描述物件與表映射關係,框架據此將實體物件持久化到資料庫表。
  2. JPA API:操作實體物件,執行 CRUD 操作,框架在後台完成所有工作,開發者從繁瑣 JDBC 和 SQL 代碼中解脫。
  3. 查詢語言:透過面向物件而非面向資料庫的查詢語言查詢資料,避免程式 SQL 語句緊密耦合。

JPA 五大優勢

1. 標準化

JPA 是 JCP 組織發布的 Java EE 標準之一,任何宣稱符合 JPA 標準的框架遵循相同架構、提供相同存取 API,保證基於 JPA 開發的企業應用經少量修改即可在不同 JPA 框架下運行。

2. 容器級特性支援

支援大資料集、事務、並發等容器級特性,超越簡單持久化框架限制,在企業應用發揮更大作用。

3. 簡單易用、整合方便

主要目標提供更簡單程式模型:建立實體如建立 Java 類別般簡單,僅需 @Entity 註解;框架和介面簡單,無特別規則和設計模式要求,易掌握。基於非侵入式設計,易與其他框架或容器整合。

4. 查詢能力媲美 JDBC

查詢語言面向物件,以自然語法構造查詢語句,可視為 Hibernate HQL 等價物。定義獨特 JPQL(Java Persistence Query Language),為 EJB QL 擴展,針對實體查詢,操作對象是實體而非關聯資料庫表,支援批量更新修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才有的高階查詢特性,甚至支援子查詢。

5. 支援面向物件高階特性

支援類別繼承、多型、複雜關係等面向物件高階特性,讓開發者最大程度使用物件模型設計企業應用,無需自行處理這些特性在關聯資料庫持久化。

JPA 主要供應商

1. Hibernate

JPA 需 Provider 實現功能,Hibernate 是極強 Provider。功能上 JPA 目前是 Hibernate 功能子集。Hibernate 3.2 起相容 JPA,並通過 Sun TCK JPA 相容認證。熟悉 Hibernate 轉 JPA 代價極小:實體狀態、flush 方法、Query 用法高度對應。

2. Spring

Spring + Hibernate 常稱 Java Web 應用最旺框架組合。Spring 2.0.1 正式支援 JPA,提供完整 EJB 容器契約,允許 JPA 在任何環境 Spring 管理服務層使用(含 AOP、DI 增強)。

3. OpenJPA

Apache 開源專案,實現 EJB 3.0 JPA 標準,提供功能強大、使用簡單持久化資料管理框架。可獨立作為持久層框架,也易與其他 Java EE 應用框架或符合 EJB 3.0 標準容器整合。

4. 其他

TopLink(現開源)、Hibernate EntityManager 等。OpenJPA 雖免費,但功能、效能、普及度仍需加強。

總結

EJB 3.0 和 JPA 將是 Java EE 5 主要賣點。JPA 提供標準 OR 映射方案,完全整合到 EJB 3.0 相容容器。前輩 ORM 框架將持續發展,但業務應用中直接使用可能減少。實現 JPA 相容實體管理器似乎是此類技術發展方向。Java EE 系列規範較大問題在於 Web 和 EJB 容器整合,Spring 仍具優勢。JBoss Seam 嘗試自定義方法解決。Caucho Resin 擴展容器邊界支援 Web 容器中 @EJB 註解。期待 Java EE 5.1 解決層整合問題。Sun 可能將 JPA 作為單獨 JSR 或 Java SE 一部分,但重點是我們現在已可脫離容器在 Java SE 應用中使用 JPA。JPA 作為物件持久化標準,不僅獲得 Java EE 應用伺服器支援,還可直接用於 Java SE。開發者無需在現有多種 ORM 框架中艱難選擇,現有 ORM 框架光環將漸漸暗淡。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved