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