[搬家文]兩篇文章(ajax重新整理問題,hibernate學習心得)

來源:互聯網
上載者:User

本機快取的網頁對ajax造成影響

我以前一直採用定義一個小的內容頁面作為返回內容的載體,來使用ajax
開發時候常遇到莫名奇妙的問題:明明所有的東西沒有一點錯誤了,但出來的結果仍然有問題或者和以前一樣。
我一直沒有搞明白怎麼回事,好在有一次我誤打誤撞,在遇到此類問題的時候清除了一次IE的本機快取,問題居然迎刃而解。
仔細想想大概是因為ajax請求返回的內容頁面雖然在表現的時候只是嵌入在主體的頁面中,但是還是被ie當作一個單獨頁面給存了一份,所以你在源碼處怎麼改,用戶端還是以之前的頁面為基礎產生返回內容。
我準備在內容頁面中加入
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
作為臨時的解決方案,每次關閉ie清該頁面的緩衝。
以後研究下不再靠網頁作為返回內容的載體,尋求其他方式。

 

[2008-8-13補充]這個問題其實有個最簡單的解決方案,即每次提交ajax 請求時,帶上一個每次都有變化的參數值就OK了,比如帶上 {_:+new Date}這組參數,就能保證每次ajax都取得最新的內容

 

學習hibernate得到的一些零散知識

VO 與 PO
VO在save以後,就成為PO,進入hibernate 持久化緩衝。
hibernate查詢方法傳回值也是PO。
在session關閉後,PO就變成VO。
當session.flush()時,會自動尋找所有改變過的PO,以此更新資料庫。
因此在 有OpenSessionInViewFilter的view層,改變bo中的值會直接影響到資料庫,很好的解釋了我以前遇到的怪問題。

何時是從持久層獲得資料的?
條件中查詢都是直接從資料庫得到資料,比如find方法。
指定主鍵ID來擷取單條資料或者迭代Iterate,是會先從持久層中尋找對應資料,找不到再去資料庫中找。
(這樣說來,在我們的項目中,持久化幾乎沒有起什麼作用阿...)

樂觀鎖與悲觀鎖
悲觀鎖是用setLockMode()方法指定的,放在查詢語句之前,查詢所得部分的資料將無法修改。

樂觀鎖在mapping配置中指定 Class 加一個屬性 optimistic-lock = "version"
最後還要加一個欄位 <version column="version" name="version" type="java.lang.Integer"/>
鎖的方法就像版本庫的控制一樣.

setFetchSize()和setMaxResult()
setMaxResult()返回的list中,只有指定數量的結果。
而setFetchSize()是這樣的,一次性向資料庫查詢的話,就只獲得指定數量的結果,當這些結果都被遍曆了,需要更多結果時,hibernate再向資料庫中讀入指定數量的新資料。
據此,我的理解是,setMaxResult主要用於分頁,而setFetchSize()則出於效能考量

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.