什么是 ORM?
ORM
物件關系映射(英語:Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程式設計技術,用于實作面向物件編程語言里不同型別系統的資料之間的轉換,從效果上說,它其實是創建了一個可在編程語言里使用的“虛擬物件資料庫”,
ORM是面向物件程式設計語言和關系型資料庫發展不同步時的解決方案,采用 ORM框架后,應用程式不再直接訪問底層資料庫,而是以面向物件的方式來操作持久化物件,而ORM框架則將這些面向物件的操作轉換成底層的 SQL 操作,
為什么說 Mybatis是半自動 ORM框架,而 Hibenate是全自動 ORM框架?
我們先來看看在持久層框架出現以前我們是如何對資料庫進行操作的?
毋庸置疑,我們都使用 JDBC(Java Database Connectivity) 對資料庫進行操作,操作步驟如下:
1、加載驅動程式
Class.forName(driverClass)
//加載MySql驅動
Class.forName("com.mysql.jdbc.Driver")
2、獲取資料庫連接
DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc", "root", "root");
3、創建 Statement / PerparedStatement 物件
conn.createStatement();
conn.prepareStatement(sql);
4、操作資料庫
stmt.executeQuery("...");
5、關閉連接
stmt.close();
conn.close();
Mybatis的實作機制
1、讀取 Mybatis的全域組態檔 mybatis-config.xml
2、創建 SqlSessionFactory會話工廠
3、創建 SqlSession會話
4、執行查詢操作
mybatis-config.xml檔案中包括一系列配置資訊,其中包括標簽 <mapper>,此標簽配置了映射節點,映射節點內部定義了SQL陳述句,
Mybatis將 SQL的定義作業獨立出來,讓用戶自定義,而 SQL的決議,執行等作業交由 Mybatis處理執行,
Hibenate 的實作機制
1、構建 Configuration實體,初始化該實體中的變數
2、加載 hibenate.cfg.xml 檔案到記憶體
3、通過 hibenate.cfg.xml 檔案中的 mapping 節點配置并加載 xxx.hbm.xml 檔案至記憶體
4、利用 Configuration實體構建 SessionFactory 實體
5、由SessionFactory 實體構建 session實體
6、由 session實體創建事務操作介面 Transaction 實體
7、執行查詢操作
總結
傳統的 jdbc 是手工的,需要程式員加載驅動、建立連接、創建 Statement 物件、定義SQL陳述句、處理回傳結果、關閉連接等操作,
Hibernate 是自動化的,內部封裝了JDBC,連 SQL 陳述句都封裝了,理念是即使開發人員不懂SQL語言也可以進行開發作業,向應用程式提供呼叫介面,直接呼叫即可,
Mybatis 是半自動化的,是介于 jdbc 和 Hibernate之間的持久層框架,也是對 JDBC 進行了封裝,不過將SQL的定義作業獨立了出來交給用戶實作,負責完成剩下的SQL決議,處理等作業,
Mybatis 與 Hibernate 二者對比有什么特點?
相同點
- 二者都是對優秀的持久層框架,幫助開發人員簡化了開發作業
- 都是對
JDBC進行封裝 - 都是通過
SessionFactory創建session物件,由session物件執行對資料庫的操作陳述句
不同點
Mybatis是半自動的映射持久層框架;Hibernate是全自動的映射持久層框架Hibernate不需要手動撰寫SQL,只需要操作相應物件即可,大大降低了物件與資料庫的耦合性,而Mybatis需要手動撰寫 SQL,可移植性Hibernate比Mybatis更高Mybatis支持動態SQL,處理串列,存盤程序,開發作業量相對大些;Hibernate提供了HQL操作資料庫,如果專案需要支持多種資料庫,代碼開發量少,但 SQL陳述句的優化困難Mybaits入門簡單,即學即用;Hibernate學習門檻相對較高
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/292570.html
標籤:其他
上一篇:推薦幾本DBA提升的書籍
下一篇:DIAView高級視頻教程
