hibernate的緩存和CRUD_JSP教程
推薦:WML語言的基本情況用于WAP的標記語言就是WML(Wireless Markup Language)。 WML的語法跟XML一樣,WML是XML的子集。 HTML、XML和WML的文件有很多相似之處,這樣網頁開發者在過去10年中所學的東西今天依然適用。 WML頁面文件的后綴是 *.WML,就象HTML的 *.HTML后綴。 XML規定定義了一個規
hibernate作為一種現在比較流行的輕量級的ORM框架,2003年開始在國內流行,到目前來說在做持久層上還是占有統治地位的。雖然說豐富靈活的HQL和面對對象的Criteria查詢,把程序員從復雜繁瑣的JDBC中解放了出來,但作為持久層的框架,它的性能才是最重要的核心問題。而性能的核心在于緩存,由于最近在學習這些,所以就把自己的學到的一點東西拿來與大家分享,希望能起到拋磚引玉的效果。字體設計教程
在說這些之前的先說說hibernate實體對象的三種狀態:風訊Cms教程
1.Transient:所謂Transient就是說實體對象在內存中自有存在,與數據庫中的記錄無關。
2.Persient:Persient對象對應數據庫中的一條記錄,也可以這樣理解,如果一個實體對象與某個session發生關聯,并處于對應session的有效期內,那它就處于Persient狀態。
3.Detached:所謂的Detached就是處于Persient狀態的對象對應的session關閉之后的狀態。
我們平時所說的PO(持久化對象)指的就是位于Persient狀態的對象,而VO(值對象)就是指Transient和Detached狀態的對象。
下面開始說CRUD
保存:hibernate中保存的方法很多我主要說說下面幾個
1.save()方法,調用save方法時,首先會在session緩存中查找保存對象如果實體對象已經處于Persient狀態,直接返回,否在實行sql操作,并將保存的實體對象加入session緩存(save方法不會把實體加入二級緩存的),最后對存在的級聯關系進行遞歸處理。
2.saveOrUpdate()方法:和save方法一樣首先在session緩存中查找,判斷對象是否為為保存狀態,如果對象處于Persient,不執行操作,處于Transient執行save操作,處于Detached調用save將對象與session重新關聯。
這里要注意的是批量操作時要適時對session進行flush操作避免OutOfMenoryError。
刪除:刪除我主要說批量刪除,hibernate在進行批量刪除前,首先必須將所有符合條件的數據加載到內存中(這是所有ORM框架必須面對的問題,這樣主要是為了對目前的內部緩存和二級緩存中數據進行整理,以保存和數據庫的一致性)這樣就面對這如果操作數據量過大,也會出現OutOfMenoryError,所以推薦使用迭代刪除。
修改:修改主要談談update方法,update和前面的save一樣首先還是要進行在內部緩存中查找,要注意兩點,
1.Persient狀態的實體對象調用update沒有任何作用,update的SQL將在session.flush()方法中執行。
查詢:查詢是受緩存影響最大的,主要談一下以下幾種查詢
1.load和get:這兩者的區別主要是load會在二級緩存中查找,而get在內部緩存中查找不到將跳過二級緩存直接進行sql操作。
2.createQuery()的list()和iterate()方法,list()實際上無法使用緩存的,他對緩存只寫不讀,而ierate則是首先查找所有符合條件的數據id(首先在本地緩存中查找)在執行相應的select獲得對應記錄,iterate方法的使用最好是查找的實體對象在緩存已經存在,否則查詢性能較低,易產生N+1現象。
其實還有Query Cache但怕篇幅太長,讓人煩所以就就此停筆,其實緩存是一個很深問題,也很值得研究。
分享:加快JDBC中JSP數據庫的訪問速度JSP程序都是模塊,并且具有強大的表達-請求(divsentation-request)功能。 建立一個完美的數據庫訪問是一個具有挑戰的過程,而JDBC接口能夠很好地完成這一過程。 然而,嵌入于JSP代碼中的JDBC代碼,與SQL命令嵌入在JDBC一樣,可以充分利用JSP的功能,為客戶端建立一個整
- jsp response.sendRedirect不跳轉的原因分析及解決
- JSP指令元素(page指令/include指令/taglib指令)復習整理
- JSP腳本元素和注釋復習總結示例
- JSP FusionCharts Free顯示圖表 具體實現
- 網頁模板:關于jsp頁面使用jstl的異常分析
- JSP頁面中文傳遞參數使用escape編碼
- 基于jsp:included的使用與jsp:param亂碼的解決方法
- Java Web項目中連接Access數據庫的配置方法
- JDBC連接Access數據庫的幾種方式介紹
- 網站圖片路徑的問題:絕對路徑/虛擬路徑
- (jsp/html)網頁上嵌入播放器(常用播放器代碼整理)
- jsp下顯示中文文件名及絕對路徑下的圖片解決方法
- 相關鏈接:
- 教程說明:
JSP教程-hibernate的緩存和CRUD
。