JPA和hibernate以及SpringDataJPA


什么是jpa

JPA java persistence api ,為POJO(就是我們的JavaBean)提供持久化標准規范,JavaEE規范之一

主要思想,3個:

1 ORM(Object Relational Mapping)映射元數據,通過XML或注解,描述對象和表之間的關系,框架據此將實體對象持久化到數據庫

       關鍵字:ORM映射、實體持久化

2 規范的API,通過操作實體對象,就能執行對應數據庫的CRUD操作,ORM框架讓開發從繁瑣的JDBC和SQL代碼中解脫出來

       關鍵字:實體對象、JDBC和SQL、解脫

3 查詢語言,通過面向對象而非面向數據庫的查詢語言查詢數據,避免程序的SQL語句緊密耦合

       關鍵字:面向對象查詢、SQL解耦

 

JPA與ORM什么關系

l  ORM是JPA規范中的一個體現思想,JPA規范包含了ORM

l  Sun公司為了簡化現有Java EE和Java SE應用的對象持久化的開發工作,整合ORM技術,結束現在Hibernate、iBATIS、TopLink等ORM框架各自為營的局面,提出了新的JPA ORM規范。

JPA的實現者(供應商):

Hibernate、OpenJPA、TopLink等

 

Hibernate和Hibernate JPA

Hibernate在JPA規范出現后,也提供了對JPA的實現,也就是說Hibernate有兩套開發風格,一種我們以前學習的,另一種是JPA風格的。具體demo參考

http://www.micmiu.com/j2ee/hibernate/hibernate-jpa-demo/

 

 

 

 

 

什么是Spring Data

Spring Data 是Spring 的一個子項目(不是很成熟), 旨在統一和簡化對各類型持久化存儲, 而不拘泥於是關系型數據庫還是NoSQL 數據存儲。(野心很大)

 

無論是哪種持久化存儲, 數據訪問對象(或稱作為DAO,即Data Access Objects)通常都會提供對單一域對象的CRUD (創建、讀取、更新、刪除)操作、查詢方法、排序和分頁方法等。

 

Spring Data則提供了基於這些層面的統一接口(CrudRepository,PagingAndSortingRepository)以及對持久化存儲的實現。

 

Spring Data 包含多個子項目:

l  Commons - 提供共享的基礎框架,適合各個子項目使用,支持跨數據庫持久化

Hadoop - 基於 Spring 的 Hadoop 作業配置和一個 POJO 編程模型的 MapReduce 作業

l  Key-Value  - 集成了 Redis 和 Riak ,提供多個常用場景下的簡單封裝

l  Document - 集成文檔數據庫:CouchDB 和 MongoDB 並提供基本的配置映射和資料庫支持

l  Graph - 集成 Neo4j 提供強大的基於 POJO 的編程模型

l  Graph Roo AddOn - Roo support for Neo4j

JDBC Extensions - 支持 Oracle RAD、高級隊列和高級數據類型

JPA - 簡化創建 JPA 數據訪問層和跨存儲的持久層功能

l  Mapping - 基於 Grails 的提供對象映射框架,支持不同的數據庫

l  Examples - 示例程序、文檔和圖數據庫

l  Guidance - 高級文檔

 

(Spring Data就像一口缸,什么都想往里裝,想實現完全統一的數據訪問層的API)

 

 

 

 

 

 

什么是Spring Data JPA

Spring Data JPA 框架,主要針對的就是 Spring 唯一沒有簡化到的業務邏輯代碼,至此,開發者連僅剩的實現持久層業務邏輯的工作都省了,唯一要做的,就只是聲明持久層的接口,其他都交給 Spring Data JPA 來幫你完成!

 

spring data jpa、jpa以及ORM框架之間的關系

 

Spring data jpa是在JPA規范下提供了Repository層的實現,但是使用哪一種ORM需要你來決定(默認使用Hibernate JPA的實現)。雖然ORM框架都實現了JPA規范,但是在不同的ORM框架之間切換仍然需要編寫不同的代碼,而通過使用Spring data jpa能夠方便大家在不同的ORM框架之間進行切換而不要更改代碼。並且spring data jpa 對Repository層封裝的很好,也省去了不少的麻煩。 

詳細可參考:

http://blog.csdn.net/anxpp/article/details/51415698

https://www.cnblogs.com/dreamroute/p/5173896.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM