什么是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 - 提供共享的基礎框架,適合各個子項目使用,支持跨數據庫持久化
l 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
l JDBC Extensions - 支持 Oracle RAD、高級隊列和高級數據類型
l 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