1、Hibernate是對JDBC進一步封裝數據庫
原來沒有使用Hiberante作持久層開發時,存在不少冗餘,如:各類JDBC語句,connection的管理,因此出現了Hibernate把JDBC封裝了一下,咱們不用操做數據,直接操做它就好了。session
2、咱們再從分層的角度來看架構
典型的三層架構:表示層,業務層,還有持久層。Hiberante也是持久層的框架,並且持久層的框架還有不少,好比:IBatis,Nhibernate,JDO,OJB,EJB等等。app
3、Hibernate是開源的一個ORM(對象關係映射)框架。框架
ORM,即Object-Relational Mapping,它的做用就是在關係型數據庫和對象之間作了一個映射。從對象(Object)映射到關係(Relation),再從關係映射到對象。這樣,咱們在操做數據庫的時候,不須要再去和複雜SQL打交道,只要像操做對象同樣操做它就能夠了(把關係數據庫的字段在內存中映射成對象的屬性)。測試
Hibernate六大核心接口,兩個主要配置文件網站
一、Configuration接口:負責配置並啓動Hibernateui
二、SessionFactory接口:負責初始化Hibernatespa
三、Session接口:負責持久化對象的CRUD操做.net
四、Transaction接口:負責事務
五、Query接口和Criteria接口:負責執行各類數據庫查詢
注意:Configuration實例是一個啓動期間的對象,一旦SessionFactory建立完成它就被丟棄了。
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作了持久層的封裝,你就不知道數據庫,你寫的全部的代碼都具備可複用性。
三、Hibernate是一個沒有侵入性的框架,沒有侵入性的框架咱們稱爲輕量級框架。
對比Struts的Action和ActionForm,都須要繼承,離不開Struts。Hibernate不須要繼承任何類,不須要實現任何接口。這樣的對象叫POJO對象。
四、Hibernate代碼測試方便。
五、提升效率,提升生產力。
缺點:
一、使用數據庫特性的語句,將很難調優
二、對大批量數據更新存在問題
三、系統中存在大量的攻擊查詢功能