为什么要用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的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 为什么要用MyBatis-Spring
- 下一篇: 为什么要用MyBatis-MyBatis
