一、Hibernate是對JDBC進一步封裝
原來沒有使用Hiberante做持久層開發時,存在很多冗余,如:各種JDBC語句,connection的管理,所以出現了Hibernate把JDBC封裝了一下,我們不用操作數據,直接操作它就行了。
二、我們再從分層的角度來看
典型的三層架構:表示層,業務層,還有持久層。Hiberante也是持久層的框架,而且持久層的框架還有很多,比如:IBatis,Nhibernate,JDO,OJB,EJB等等。
三、Hibernate是開源的一個ORM(對象關系映射)框架。
ORM,即Object-Relational Mapping,它的作用就是在關系型數據庫和對象之間做了一個映射。從對象(Object)映射到關系(Relation),再從關系映射到對象。這樣,我們在操作數據庫的時候,不需要再去和復雜SQL打交道,只要像操作對象一樣操作它就可以了(把關系數據庫的字段在內存中映射成對象的屬性)。
Hibernate的核心:
Hibernate六大核心接口,兩個主要配置文件
1、Configuration接口:負責配置並啟動Hibernate
2、SessionFactory接口:負責初始化Hibernate
3、Session接口:負責持久化對象的CRUD操作
4、Transaction接口:負責事務
5、Query接口和Criteria接口:負責執行各種數據庫查詢
注意:Configuration實例是一個啟動期間的對象,一旦SessionFactory創建完成它就被丟棄了。
Hibernate運行過程:
1.通過Configuration().configure();讀取並解析hibernate.cfg.xml配置文件
2.由hibernate.cfg.xml中的<mappingresource="com/xx/User.hbm.xml"/>讀取並解析映射信息
3.通過config.buildSessionFactory();//創建SessionFactory
4.sessionFactory.openSession();//打開Sesssion
5.session.beginTransaction();//創建事務Transation
6.persistent operate持久化操作 //一般指Save這個方法
7.session.getTransaction().commit();//提交事務
8.關閉Session
9.關閉SesstionFactory
Hibernate的優/缺點:
優點:
1、更加對象化
以對象化的思維操作數據庫,我們只需要操作對象就可以了,開發更加對象化。
2、移植性
因為Hibernate做了持久層的封裝,你就不知道數據庫,你寫的所有的代碼都具有可復用性。
3、Hibernate是一個沒有侵入性的框架,沒有侵入性的框架我們稱為輕量級框架。
對比Struts的Action和ActionForm,都需要繼承,離不開Struts。Hibernate不需要繼承任何類,不需要實現任何接口。這樣的對象叫POJO對象。
4、Hibernate代碼測試方便。
5、提高效率,提高生產力。
缺點:
1、使用數據庫特性的語句,將很難調優
2、對大批量數據更新存在問題
3、系統中存在大量的攻擊查詢功能