日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

为什么要用MyBatis-Hibernate

發布時間:2024/4/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么要用MyBatis-Hibernate 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要解決這些問題,使用這些工具類還是不夠的,要用到我們今天講的ORM 框架。

那什么是ORM?為什么叫ORM?

ORM 的全拼是Object Relational Mapping,也就是對象與關系的映射,對象是程序里面的對象,關系是它與數據庫里面的數據的關系。也就是說,ORM 框架幫助我們解決的問題是程序對象和關系型數據庫的相互映射的問題。

O:對象——M:映射——R:關系型數據庫

今天聽課的同學應該有很多同學是用過Hibernate 或者現在還在用的。Hibernate是一個很流行的ORM 框架,2001 年的時候就出了第一個版本。在使用Hibernate 的時候,我們需要為實體類建立一些hbm 的xml 映射文件(或者類似于@Table 的這樣的注解)。例如:

<hibernate-mapping><class name="cn.leon.vo.User" table="user"><id name="id"><generator class="native"/></id><property name="password"/><property name="cellphone"/><property name="username"/></class> </hibernate-mapping>

然后通過Hibernate 提供(session)的增刪改查的方法來操作對象。

//創建對象 User user = new User(); user.setPassword("123456"); user.setCellphone("18166669999"); user.setUsername("leon"); //獲取加載配置管理類 Configuration configuration = new Configuration(); //不給參數就默認加載hibernate.cfg.xml 文件, configuration.configure(); //創建Session 工廠對象 SessionFactory factory = configuration.buildSessionFactory(); //得到Session 對象 Session session = factory.openSession(); //使用Hibernate 操作數據庫,都要開啟事務,得到事務對象 Transaction transaction = session.getTransaction(); //開啟事務 transaction.begin(); //把對象添加到數據庫中 session.save(user); //提交事務 transaction.commit(); //關閉Session session.close();

我們操作對象就跟操作數據庫的數據一樣。Hibernate 的框架會自動幫我們生成SQL語句(可以屏蔽數據庫的差異),自動進行映射。這樣我們的代碼變得簡潔了,程序的可讀性也提高了。

但是Hibernate 在業務復雜的項目中使用也存在一些問題:

1、比如使用get()、save() 、update()對象的這種方式,實際操作的是所有字段,沒有辦法指定部分字段,換句話說就是不夠靈活。

2、這種自動生成SQL 的方式,如果我們要去做一些優化的話,是非常困難的,也就是說可能會出現性能比較差的問題。

3、不支持動態SQL(比如分表中的表名變化,以及條件、參數)。

?

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的为什么要用MyBatis-Hibernate的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。