jpa findone怎么用_Jpa VS MyBatis,你用哪个?
經常看到有小伙伴在討論 JPA 和 MyBatis 這兩個孰優孰劣的問題,其實松哥覺得這是一個偽命題,沒必要為這種問題爭個面紅耳赤,每種框架有它存在的道理,也有各自擅長的事情,今天松哥就和大家來聊聊這兩個框架,順便來了解一下大家在開發中都用的是哪一個數據庫框架?
以下內容,松哥盡量保持一個客觀中立立場,大家不要噴我,說的不完善的地方大家可以留言補充。
JPA
JPA是什么
Java Persistence API:用于對象持久化的 API
Java EE 5.0 平臺標準的 ORM 規范,使得應用程序以統一的方式訪問持久層?
JPA和Hibernate的關系
JPA 是 Hibernate 的一個抽象(就像JDBC和JDBC驅動的關系);
JPA 是規范:JPA 本質上就是一種 ORM 規范,不是ORM 框架,這是因為 JPA 并未提供 ORM 實現,它只是制訂了一些規范,提供了一些編程的 API 接口,但具體實現則由 ORM 廠商提供實現;
Hibernate 是實現:Hibernate 除了作為 ORM 框架之外,它也是一種 JPA 實現
從功能上來說, JPA 是 Hibernate 功能的一個子集
JPA的供應商
JPA 的目標之一是制定一個可以由很多供應商實現的 API,Hibernate 3.2+、TopLink 10.1+ 以及 OpenJPA 都提供了 JPA 的實現,JPA 供應商有很多,常見的有如下四種:
1.Hibernate
JPA 的始作俑者就是 Hibernate 的作者,Hibernate 從 3.2 開始兼容 JPA。
2.OpenJPA
OpenJPA 是 Apache 組織提供的開源項目。
3.TopLink
TopLink 以前需要收費,如今開源了。
4.EclipseLink
JPA的優勢
標準化: 提供相同的 API,這保證了基于JPA 開發的企業應用能夠經過少量的修改就能夠在不同的 JPA 框架下運行。
簡單易用,集成方便: JPA 的主要目標之一就是提供更加簡單的編程模型,在 JPA 框架下創建實體和創建 Java 類一樣簡單,只需要使用 javax.persistence.Entity 進行注解;JPA 的框架和接口也都非常簡單。
可媲美JDBC的查詢能力: JPA的查詢語言是面向對象的,JPA定義了獨特的JPQL,而且能夠支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能夠提供的高級查詢特性,甚至還能夠支持子查詢。
支持面向對象的高級特性: JPA 中能夠支持面向對象的高級特性,如類之間的繼承、多態和類之間的復雜關系,最大限度的使用面向對象的模型
....
JPA包含的技術
ORM 映射元數據:JPA 支持 XML 和 JDK 5.0 注解兩種元數據的形式,元數據描述對象和表之間的映射關系,框架據此將實體對象持久化到數據庫表中。
JPA 的 API:用來操作實體對象,執行CRUD操作,框架在后臺完成所有的事情,開發者從繁瑣的 JDBC 和 SQL 代碼中解脫出來。
查詢語言(JPQL):這是持久化操作中很重要的一個方面,通過面向對象而非面向數據庫的查詢語言查詢數據,避免程序和具體的 SQL 緊密耦合。
MyBatis
什么是 MyBatis
MyBatis 也是一個 Java 持久化框架,它通過 XML 描述符或 Annotation 把對象與存儲過程或SQL語句關聯起來。與 JPA 這種對象關系映射(ORM)框架不同,MyBatis 并沒有將 Java 對象與數據庫表關聯起來,而是將 Java 方法與 SQL 語句關聯。MyBatis 允許用戶充分利用數據庫的各種功能,例如存儲過程、視圖、各種復雜的查詢以及某數據庫的專有特性,其實 MyBatis 最吸引松哥的地方就是完全控制 SQL 的執行。
與 JDBC 相比,MyBatis 簡化了查詢結果映射:SQL 語句在一行代碼中就能執行。MyBatis 提供了一個映射引擎,聲明式的把 SQL 語句執行結果與對象樹映射起來。通過使用一種內建的類 XML 表達式語言,或者使用 Apache Velocity 集成的插件,SQL 語句可以被動態的生成,這些特性都可以使開發者更方便的使用 MyBatis。MyBatis 也支持聲明式數據緩存,當一條SQL語句被標記為“可緩存”后,首次執行它時從數據庫取得的所有數據會被存儲在一段高速緩存中,今后執行這條語句時就會從高速緩存中讀取結果,而不是再次命中數據庫。
MyBatis 優勢
上手容易,也更加容易掌握。
由于自己掌握 SQL ,因此可以寫出更加優質的 SQL ,提高 SQL 的執行效率。
多表關聯查詢時,MyBatis 要靈活一些,也更具備優勢。
.....
怎么用
關于這兩個框架的用法,松哥在公眾號都寫過專門的文章介紹,讀者可以翻一下歷史記錄,三年前還在 CSDN 寫過一個 MyBatis 專欄,有興趣的小伙伴可以去松哥專欄看看。
你用哪個
最后松哥來做一個小小的調查,看看大家在開發中用的哪個?
大家也可以留言說說自己項目中用了哪一個數據持久化框架,出于什么樣的考慮用了該框架?
關注牧碼小子,后臺回復 Java ,領取松哥為你精心準備的Java干貨!往期文章一覽
1、工作之余,你是怎么提高技術的?
2、兩年了,我寫了這些干貨!
3、想和大家談一點合作
4、一個Java程序猿眼中的前后端分離以及Vue.js入門
5、跟著平臺混了四年,現在要單飛了!
你點的每個在看,我都認真當成了喜歡總結
以上是生活随笔為你收集整理的jpa findone怎么用_Jpa VS MyBatis,你用哪个?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: snort入侵检测系统下载Linux,入
- 下一篇: python科赫曲线绘制正方形_Pyth