为什么使用hibernate
hibernate是一個開源的持久化對象關系映射的框架,他對jdbc進行了輕量級的封裝,而我們可以使用
面向對象的思想來操縱數據庫
?
hibernate的和新街口;
?
session;負責被持久化對象的crud操作;
sessionfactory;負責初始化hibernate,創建session對象
configuration;負責配置并啟動hibernate,創建sessionfactory
transaction;負責事物的相關的操作
query和criteria接口;負責執行各種數據庫查詢
?
為什么使用hibernate?
1,對jdbc訪問數據庫的代碼做了封裝,大大簡化了數據訪問層繁瑣的重復性代碼
2,hibernate是一個優秀的主流orm框架,支持各種數據庫,
3,hibernate使用java反射機制,而不是自己嗎掙錢程序來實現透明性
?
hibernate是如何演示加載?get與load的區別
?
1,對于hibernate get方法,hibernate會確認一下該id對應的數據是否存在,首先在session緩存中
查找,然后在二級緩存中查找,還沒有就查詢數據庫,數據庫中沒有就返回null
2,hibernate load方法加載實體對象的時候,根據映射文件上類級別的lazy屬性配置(默認true)
分情況;
001,若為true則首先在session緩存中查找,查看該id對應的對象是否存在,不存在則使用演示加
載,返回實體的代理類對象,等到具體使用該對象的時候,在查詢二級緩存和數據庫,若仍沒發現符
合條件的記錄,則會拋出ObjectNotFountException
002,若為false,就跟hibernate的fet方法查找順序一樣,知識最終若沒有發現符合條件的記錄,則會拋出一個ObjectNotFoundException
?
get與load的區別
1,如果未發現符合條件的記錄,hibernate的get方法返回null,而load方法會拋出
ObjectNotFoundException
2,load方法可返回沒有加載實體數據的代理類實例,而get方法永遠返回有時有實體數據的對象
3,get方法會立即執行,而load方法是在調用的時候才執行
?
hibernate緩存機制
緩存作用;
hibernate是一個持久層框架,經常訪問物理數據庫,為了降低應用程序對物理數據庫訪問的次數,
從未提高應用程序的運行性能,從而引入了緩存,緩存內的數據是對物理數據源中的數據的復制,應
用程序咋運行時從緩存讀寫數據,在特定時刻或時間會同步緩存和物理數據源的數據
?
hibernate緩存分類
hibernate緩存包括兩大類,hibernate一級緩存和hibernate二級緩存
hibernate一級緩存;又稱為session緩存,它是內置的,意思是說,只要使用hibernate就必須使用
session緩存,他的緩存是事物范圍的緩存,在一級緩存中,持久化測類的每個實例都具有唯一的
OID
hibernate二級緩存;又稱為sessionfactory的緩存,由于sessionfactory對象的生命周期和應用程
序的整個過程對應,因此二級緩存是進程范圍或者集群范圍的緩存,有可能出現并發問題,二級緩存
是可選的,是一個可配置的插件,在默認情況下,sessionfactory不會啟用這個插件
?
什么樣的數據適合存放到二級緩存中?
1,很少被修改的數據
2,不是很重要的數據,允許出現偶爾并發的數據
3,不會被并發訪問的數據
4,常量數據
?
不適合放到二級緩存中的數據?
1,經常被修改的數據
2,絕對不允許出現并發訪問的數據,如財務數據,
3,與其他應用共享的數據
?
轉載于:https://www.cnblogs.com/liuyunfei/p/7115560.html
總結
以上是生活随笔為你收集整理的为什么使用hibernate的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【bzoj4408】[Fjoi 2016
- 下一篇: 2 - 4 - 实例:X86的中断与异常