Hibernate基礎知識總結

Hibernate是JDBC的輕量級的對象封裝(encapsulation),它是一個獨立的對象持久persistence層框架。 hibernate要作的事,就是讓對象投影到關係數據庫中,而後實施化。它把數據層和業務層實現的解耦,這樣能很好的轉化想要的數據庫。數據庫

1、hibernate的核心接口:緩存

session:負責被持久化對象CRUD操做;session

sessionFactory:負責初始化hibernate,建立session對象;併發

configuration:負責配置啓動hibernate,建立sessionFactory;app

Transaction:負責事務項目的相關操做;框架

Query和Criteria接口:負責執行各類數據庫查詢;優化

2、hibernate的工做原理:ui

一、經過Configuration config=new Configuration().configure();//讀取並解析hibernate.cfg.xml配置文件hibernate

二、由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>//讀取並映射信息插件

三、經過SessionFactory sf=config.buildSessionFactory();//建立SessionFactory

四、Session session=sf.openSession();//打開session

五、Transaction tx=session.beginTransaction();//建立並啓動事務Transaction

六、persistent operate操做數據,持久化操做

七、tx.commit();//提交事務

八、關閉Session

九、關閉SessionFactory

3、hibernate的好處:

一、對JDBC訪問數據庫的代碼封裝,大大簡化了數據訪問層繁瑣的重複代碼。

二、hibernate是輕量級框架,支持各類數據庫,從一對一到一對多的各類複雜關係。

4、hibernate的緩存機制:

hibernate的緩存包括兩大類:一級緩存(session緩存)和二級緩存(SessionFactory緩存)

一級緩存:他是內置的,就是說只要你使用hibernate就必須使用session緩存。因爲session對象的聲明週期一般對應一個數據庫事務或者一個應用事務,所以他的緩存時事務範圍的緩存。在一級緩存中,持久化類的每一個實例都具備惟一的OID。

二級緩存:因爲二級緩存對象的生命週期和應用程序的整個過程對應,所以hibernate二級緩存是進程範圍或者集羣範圍的緩存,有可能出現併發問題,所以須要採起適當的併發訪問策略,該策略爲被緩存的數據提供了事務隔離級別。二級緩存時可選的,是一個可配置的插件,默認狀況下不會啓動。

什麼樣的數據應該放在二級緩存?

一、不多被修改的數據

二、不是很重要的數據,容許出現偶爾併發的數據

三、不會被併發訪問的數據

四、常量數據

不適合放在二級緩存中的數據?

一、常常被修改的數據

二、不容許出現併發訪問的數據

三、與其餘應用共享的數據

5、如何優化hibernate?

一、使用雙向一對多關聯,不適用單向。

二、使用一對多取代一對一

三、配置對象緩存,不適用集合緩存

6、get和load的區別?

一、get()方法直接返回實體類,若是查不到數據則返回null,不會報錯。load()會返回一個實體代理對象,當代理對象被調用時,若是沒有數據存在,就會拋出異常load支持延遲加載,get不支持。

相關文章
相關標籤/搜索