天天看點

SpringData - JPA的引入

ORM(Object-Relational Mapping)

表示對象關系映射。

在面向對象的軟體開發中,通過ORM,就可以把對象映射到關系型資料庫中。

隻要有一套程式能夠做到建立對象與資料庫的關聯,操作對象就可以直接操作資料庫資料,就可以說這套程式實作了ORM對象關系映射

簡單的說:ORM就是建立實體類和資料庫表之間的關系,進而達到操作實體類就相當于操作資料庫表的目的。

常見的orm架構:Mybatis(ibatis)、Hibernate、Jpa

為什麼使用ORM

當實作一個應用程式時(不使用O/R Mapping),我們可能會寫特别多資料通路層的代碼,從資料庫儲存資料、修改資料、删除資料,而這些代碼都是重複的。

而使用ORM則會大大減少重複性代碼。對象關系映射(簡稱ORM),主要實作程式對象到關系資料庫資料的映射。

hibernate概述

Hibernate是一個開放源代碼的對象關系映射架構.

它對JDBC進行了非常輕量級的對象封裝,它将POJO與資料庫表建立映射關系,是一個全自動的orm架構,hibernate可以自動生成SQL語句,自動執行,使得Java程式員可以随心所欲的使用對象程式設計思維來操縱資料庫。

JPA

JPA的全稱是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基于ORM的規範,内部是由一系列的接口和抽象類構成。

JPA通過JDK 5.0注解描述對象-關系表的映射關系,并将運作期的實體對象持久化到資料庫中。

JPA的優勢

1. 标準化

   JPA 是 JCP 組織釋出的 Java EE 标準之一,是以任何聲稱符合 JPA 标準的架構都遵循同樣的架構,提供相同的通路API,這保證了基于JPA開發的企業應用能夠經過少量的修改就能夠在不同的JPA架構下運作;

2. 容器級特性的支援 

   JPA架構中支援大資料集、事務、并發等容器級事務,這使得 JPA 超越了簡單持久化架構的局限,在企業應用發揮更大的作用;

3. 簡單友善

   JPA的主要目标之一就是提供更加簡單的程式設計模型:在JPA架構下建立實體和建立Java 類一樣簡單,沒有任何的限制和限制,隻需要使用 javax.persistence.Entity進行注釋,JPA的架構和接口也都非常簡單,沒有太多特别的規則和設計模式的要求,開發者可以很容易的掌握。JPA基于非侵入式原則設計,是以可以很容易的和其它架構或者容器內建;

4. 查詢能力

   JPA的查詢語言是面向對象而非面向資料庫的,它以面向對象的自然文法構造查詢語句,可以看成是Hibernate HQL的等價物。JPA定義了獨特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一種擴充,它是針對實體的一種查詢語言,操作對象是實體,而不是關系資料庫的表,而且能夠支援批量更新和修改、JOIN、GROUP BY、HAVING 等通常隻有 SQL 才能夠提供的進階查詢特性,甚至還能夠支援子查詢;

5. 進階特性

   JPA 中能夠支援面向對象的進階特性,如類之間的繼承、多态和類之間的複雜關系,這樣的支援能夠讓開發者最大限度的使用面向對象的模型設計企業應用,而不需要自行處理這些特性在關系資料庫的持久化。

JPA與hibernate的關系

JPA規範本質上就是一種ORM規範,注意不是ORM架構——因為JPA并未提供ORM實作,它隻是制訂了一些規範,提供了一些程式設計的API接口,但具體實作則由服務廠商來提供實作。 

JPA和Hibernate的關系就像JDBC和JDBC驅動的關系,JPA是規範,Hibernate除了作為ORM架構之外,它也是一種JPA實作。JPA怎麼取代Hibernate呢?JDBC規範可以驅動底層資料庫嗎?答案是否定的,也就是說,如果使用JPA規範進行資料庫操作,底層需要hibernate作為其實作類完成資料持久化工作。

SpringData - JPA的引入

繼續閱讀