日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

hibernate的緩存和CRUD_JSP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:WML語言的基本情況
用于WAP的標(biāo)記語言就是WML(Wireless Markup Language)。 WML的語法跟XML一樣,WML是XML的子集。 HTML、XML和WML的文件有很多相似之處,這樣網(wǎng)頁開發(fā)者在過去10年中所學(xué)的東西今天依然適用。 WML頁面文件的后綴是 *.WML,就象HTML的 *.HTML后綴。 XML規(guī)定定義了一個(gè)規(guī)

 hibernate作為一種現(xiàn)在比較流行的輕量級(jí)的ORM框架,2003年開始在國內(nèi)流行,到目前來說在做持久層上還是占有統(tǒng)治地位的。雖然說豐富靈活的HQL和面對(duì)對(duì)象的Criteria查詢,把程序員從復(fù)雜繁瑣的JDBC中解放了出來,但作為持久層的框架,它的性能才是最重要的核心問題。而性能的核心在于緩存,由于最近在學(xué)習(xí)這些,所以就把自己的學(xué)到的一點(diǎn)東西拿來與大家分享,希望能起到拋磚引玉的效果。字體設(shè)計(jì)教程
   在說這些之前的先說說hibernate實(shí)體對(duì)象的三種狀態(tài):風(fēng)訊Cms教程
   1.Transient:所謂Transient就是說實(shí)體對(duì)象在內(nèi)存中自有存在,與數(shù)據(jù)庫中的記錄無關(guān)。
   2.Persient:Persient對(duì)象對(duì)應(yīng)數(shù)據(jù)庫中的一條記錄,也可以這樣理解,如果一個(gè)實(shí)體對(duì)象與某個(gè)session發(fā)生關(guān)聯(lián),并處于對(duì)應(yīng)session的有效期內(nèi),那它就處于Persient狀態(tài)。
   3.Detached:所謂的Detached就是處于Persient狀態(tài)的對(duì)象對(duì)應(yīng)的session關(guān)閉之后的狀態(tài)。
     我們平時(shí)所說的PO(持久化對(duì)象)指的就是位于Persient狀態(tài)的對(duì)象,而VO(值對(duì)象)就是指Transient和Detached狀態(tài)的對(duì)象。
    下面開始說CRUD
   保存:hibernate中保存的方法很多我主要說說下面幾個(gè)
        1.save()方法,調(diào)用save方法時(shí),首先會(huì)在session緩存中查找保存對(duì)象如果實(shí)體對(duì)象已經(jīng)處于Persient狀態(tài),直接返回,否在實(shí)行sql操作,并將保存的實(shí)體對(duì)象加入session緩存(save方法不會(huì)把實(shí)體加入二級(jí)緩存的),最后對(duì)存在的級(jí)聯(lián)關(guān)系進(jìn)行遞歸處理。
        2.saveOrUpdate()方法:和save方法一樣首先在session緩存中查找,判斷對(duì)象是否為為保存狀態(tài),如果對(duì)象處于Persient,不執(zhí)行操作,處于Transient執(zhí)行save操作,處于Detached調(diào)用save將對(duì)象與session重新關(guān)聯(lián)。
      這里要注意的是批量操作時(shí)要適時(shí)對(duì)session進(jìn)行flush操作避免OutOfMenoryError。
   刪除:刪除我主要說批量刪除,hibernate在進(jìn)行批量刪除前,首先必須將所有符合條件的數(shù)據(jù)加載到內(nèi)存中(這是所有ORM框架必須面對(duì)的問題,這樣主要是為了對(duì)目前的內(nèi)部緩存和二級(jí)緩存中數(shù)據(jù)進(jìn)行整理,以保存和數(shù)據(jù)庫的一致性)這樣就面對(duì)這如果操作數(shù)據(jù)量過大,也會(huì)出現(xiàn)OutOfMenoryError,所以推薦使用迭代刪除。
   修改:修改主要談?wù)剈pdate方法,update和前面的save一樣首先還是要進(jìn)行在內(nèi)部緩存中查找,要注意兩點(diǎn),
       1.Persient狀態(tài)的實(shí)體對(duì)象調(diào)用update沒有任何作用,update的SQL將在session.flush()方法中執(zhí)行。
   查詢:查詢是受緩存影響最大的,主要談一下以下幾種查詢
       1.load和get:這兩者的區(qū)別主要是load會(huì)在二級(jí)緩存中查找,而get在內(nèi)部緩存中查找不到將跳過二級(jí)緩存直接進(jìn)行sql操作。
       2.createQuery()的list()和iterate()方法,list()實(shí)際上無法使用緩存的,他對(duì)緩存只寫不讀,而ierate則是首先查找所有符合條件的數(shù)據(jù)id(首先在本地緩存中查找)在執(zhí)行相應(yīng)的select獲得對(duì)應(yīng)記錄,iterate方法的使用最好是查找的實(shí)體對(duì)象在緩存已經(jīng)存在,否則查詢性能較低,易產(chǎn)生N+1現(xiàn)象。
       其實(shí)還有Query Cache但怕篇幅太長,讓人煩所以就就此停筆,其實(shí)緩存是一個(gè)很深問題,也很值得研究。
 

 

分享:加快JDBC中JSP數(shù)據(jù)庫的訪問速度
JSP程序都是模塊,并且具有強(qiáng)大的表達(dá)-請(qǐng)求(divsentation-request)功能。 建立一個(gè)完美的數(shù)據(jù)庫訪問是一個(gè)具有挑戰(zhàn)的過程,而JDBC接口能夠很好地完成這一過程。 然而,嵌入于JSP代碼中的JDBC代碼,與SQL命令嵌入在JDBC一樣,可以充分利用JSP的功能,為客戶端建立一個(gè)整

來源:網(wǎng)絡(luò)整理//所屬分類:JSP教程/更新時(shí)間:2012-06-12
相關(guān)JSP教程