static和瞬态_具有瞬态属性的视图对象的钝化和激活
static和瞬態(tài)
在應(yīng)用程序模塊的鈍化/激活周期內(nèi),框架也將鈍化并激活視圖對象。 通常,框架保存有關(guān)VO狀態(tài),當(dāng)前行,綁定變量值等的信息。 但是沒有數(shù)據(jù)。 激活視圖對象后,將重新執(zhí)行VO的查詢,并重新獲取數(shù)據(jù)。 在大多數(shù)情況下,查詢執(zhí)行不是在激活階段期間或之后執(zhí)行的,而是推遲到真正使用視圖對象之前執(zhí)行。 這種行為是很合邏輯的。 假設(shè)我們的應(yīng)用程序由幾個頁面組成,這些頁面代表不同視圖對象的數(shù)據(jù)。 如果我們從同一頁面向服務(wù)器發(fā)送請求,則將執(zhí)行僅在該頁面上使用的VO。 其他頁面上使用的所有其他視圖對象也將被鈍化和激活。 但是除非我們要求框架通過導(dǎo)航到特定頁面來執(zhí)行此操作,否則它們將不會重新執(zhí)行。 那太酷了! 這意味著我們不會執(zhí)行不必??要的查詢,也不會浪費(fèi)我們的內(nèi)存。 但是在某些情況下,框架在激活階段執(zhí)行VO的查詢執(zhí)行卻不會打擾我們是否真正使用VO。
其中一種情況是有關(guān)使用瞬態(tài)VO的屬性。 常見的建議是不要鈍化此類屬性。 但是,有時會使用瞬時屬性來存儲一些自定義數(shù)據(jù),并使用鈍化/激活機(jī)制作為保存此數(shù)據(jù)并使之保持活動狀態(tài)的便捷方法。 請謹(jǐn)慎使用此方法。 如果瞬態(tài)屬性的任何值被鈍化,則框架將在視圖對象激活期間執(zhí)行查詢。
讓我們考慮一個包含兩頁的示例應(yīng)用程序-員工和部門。
我們使用基于SQL的只讀視圖對象瀏覽兩個頁面上的數(shù)據(jù):
因此,所有VO的屬性都是瞬態(tài)的,我們不會對其進(jìn)行鈍化。 應(yīng)用程序模塊池已禁用:
利用ODLA探索從“員工”頁面發(fā)送的請求,我們可以看到以下內(nèi)容:
在應(yīng)用程序模塊激活階段沒有任何查詢執(zhí)行。 VEmployees查詢已按預(yù)期在準(zhǔn)備模型階段執(zhí)行。
現(xiàn)在讓我們更改VDepartments屬性之一的鈍化參數(shù):
我將使用“部門”頁面啟動該應(yīng)用程序,以便執(zhí)行VDepartments VO,然后導(dǎo)航到“員工”頁面。 從雇員頁面發(fā)送下一個請求(例如對表進(jìn)行排序),我們將獲得以下圖片:
顯然,除了執(zhí)行VEmployees查詢外,框架還執(zhí)行VDepartments。 VDepartments在激活應(yīng)用程序模塊期間執(zhí)行。 我們真的需要嗎? 我們在浪費(fèi)CPU資源來執(zhí)行不必要的查詢,并在浪費(fèi)內(nèi)存來存儲未使用的視圖對象的查詢集合。 該框架針對具有任何動態(tài)屬性的視圖對象和設(shè)置了保留視圖鏈接訪問器的主視圖對象,演示了相同的行為。 因此,請注意這些功能。
而已!
翻譯自: https://www.javacodegeeks.com/2013/07/passivation-and-activation-of-view-objects-with-transient-attributes.html
static和瞬態(tài)
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的static和瞬态_具有瞬态属性的视图对象的钝化和激活的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 路由器是桥梁如何路由器桥梁
- 下一篇: 了解Java中的可克隆接口