ORM、Hibernate與JPA的簡單概述

ORM思想和Hibernate以及jpa的概述

1、ORM概述

ORM(Object-Relational Mapping) 表示對象關係映射。

在面向對象的軟件開發中,通過ORM,就可以把對象映射到關係型數據庫中。

只要有一套程序能夠做到建立對象與數據庫的關聯,操作對象就可以直接操作數據庫數據,就可以說這套程序實現了ORM對象關係映射。

簡單的說:ORM就是建立實體類和數據庫表之間的關係,從而達到操作實體類就相當於操作數據庫表的目的。

ORM表示對象關係映射(Object-Relational Mapping)

對象映射到關係型數據庫中

操作對象就可以直接操作數據庫數據

ORM就是建立實體類和數據庫表之間的關係 從而達到操作實體類就相當於操作數據庫表的目的。

1.1 爲什麼使用ORM

當實現一個應用程序時(不使用O/R Mapping),我們可能會寫特別多數據訪問層的代碼,從數據庫保存數據、修改數據、刪除數據,而這些代碼都是重複的。而使用ORM則會大大減少重複性代碼。對象關係映射(Object Relational Mapping,簡稱ORM),主要實現程序對象到關係數據庫數據的映射。

數據訪問層的代碼 代碼重複的 使用ORM大大減少重複性代碼

ORM 實現程序對象到關係數據庫數據的映射。

1.2 常見ORM框架

常見的orm框架:Mybatis(ibatis)、Hibernate、Spring Data Jpa。

Mybatis簡介

MyBatis官網(官網地址:http://www.mybatis.org/mybatis-3/index.html)上是這樣介紹MyBatis的:MyBatis是一款優秀的持久層框架,它支持定製化自定義SQL、存儲過程以及高級映射。MyBatis避免了幾乎所有的JDBC代碼和手動設置參數以及獲取結果集。MyBatis可以使用簡單的XML或註解來配置和映射原生信息,將接口和Java的POJOs(Plain Old Java Objects,普通的Java對象)映射成數據庫中的記錄。

MyBatis的優點是:
可以手寫SQL,比較靈活。MyBatis上手更加容易,沒有什麼學習成本,SQL優化更加方便。

hibernate概述

Hibernate是一個開放源代碼的對象關係映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關係,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。

JPA概述

JPA的全稱是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基於ORM的規範,內部是由一系列的接口和抽象類構成。JPA是一種面向對象的查詢語言,定義了獨特的JPQL(Java Persistence Query Language),是一種針對實體的查詢語言,無論是查詢還是修改,全部操作的都是對象實體,而非數據庫的表。

JPA通過JDK 5.0註解描述對象-關係表的映射關係,並將運行期的實體對象持久化到數據庫中。

orm思想
主要目的:操作實體類就相當於操作數據庫表
建立兩個映射關係:
實體類和表的映射關係
實體類中屬性和表中字段的映射關係

實體類和表的映射關係

實體類中屬性和表中字段的映射關係

不再重點關注:sql語句
實現了ORM思想的框架:mybatis,hibernate, Spring Data Jpa。

2、hibernate與JPA的概述

2.1 hibernate概述

Hibernate是一個開放源代碼的對象關係映射(ORM)框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關係,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。

Hibernate 開放源代碼 ORM 框架

對JDBC 輕量級的對象封裝

POJO與數據庫表建立映射關係

是一個全自動的ORM框架

自動生成SQL語句 自動執行

使用對象編程思維來操縱數據庫

2.2 JPA概述

JPA的全稱是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基於ORM的規範,內部是由一系列的接口和抽象類構成。JPA通過JDK 5.0註解描述對象-關係表的映射關係,並將運行期的實體對象持久化到數據庫中。

JPA Java Persistence API Java持久化API

SUN推出一套基於ORM的規範

一系列的接口和抽象類構成

JPA通過JDK5.0註解描述對象-關係表的映射關係 並將運行期間的實體對象持久化到數據庫

2.3 JPA的優勢

1. 標準化

JPA 是 JCP 組織發佈的 Java EE 標準之一,因此任何聲稱符合 JPA 標準的框架都遵循同樣的架構,提供相同的訪問API,這保證了基於JPA開發的企業應用能夠經過少量的修改就能夠在不同的JPA框架下運行。

標準化

符合JPA標準的框架遵循同樣的架構

提供相同的訪問API

基於JPA開放的企業應用經過少量的修改就能夠在不同的JPA框架下運行

2. 容器級特性的支持

JPA框架中支持大數據集、事務、併發等容器級事務,這使得 JPA 超越了簡單持久化框架的侷限,在企業應用發揮更大的作用。

容器級特性的支持

JPA框架中支持 大數據集 事務 併發等容器級事務

3. 簡單方便

JPA的主要目標之一就是提供更加簡單的編程模型:在JPA框架下創建實體和創建Java 類一樣簡單,沒有任何的約束和限制,只需要使用 javax.persistence.Entity進行註釋,JPA的框架和接口也都非常簡單,沒有太多特別的規則和設計模式的要求,開發者可以很容易的掌握。JPA基於非侵入式原則設計,因此可以很容易的和其它框架或者容器集成

簡單方便

在JPA框架下創建實體和創建Java類一樣簡單

非侵入式原則設計  很容易集成

4. 查詢能力

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

JPA的查詢語言是面向對象的非面向數據庫的

獨特的JPQL 操作對象的是實體 而不是關係型數據庫的表

5. 高級特性

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

面向對象的模型設計企業應用

2.4 JPA與hibernate的關係

JPA規範本質上就是一種ORM規範,注意不是ORM框架——因爲JPA並未提供ORM實現,它只是制訂了一些規範,提供了一些編程的API接口,但具體實現則由服務廠商來提供實現。

JPA Java持久化規範 內部是由一系列的接口和抽象類組成

Hibernate實現了JPA規範

在這裏插入圖片描述
JPA和Hibernate的關係就像JDBC和JDBC驅動的關係,JPA是規範,Hibernate除了作爲ORM框架之外,它也是一種JPA實現。JPA怎麼取代Hibernate呢?JDBC規範可以驅動底層數據庫嗎?答案是否定的,也就是說,如果使用JPA規範進行數據庫操作,底層需要hibernate作爲其實現類完成數據持久化工作。

是需要具體實現來完成的  數據持久化工作

hibernate框架介紹
Hibernate是一個開放源代碼的對象關係映射框架,
它對JDBC進行了非常輕量級的對象封裝,
它將POJO與數據庫表建立映射關係,是一個全自動的orm框架

JPA規範
jpa規範,實現jpa規範,內部是由接口和抽象類組成

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章