2016-04-17 180 views
0

我是Oracle ADF的新成員,我堅持瞭解queryMode如何工作的概念。
可以有一個人,請給我解釋一下下面
- >將是什麼數據VO緩存,緩存EO當我做到這vo.executeQuery()
- >會發生什麼,當我使用setQueryMode()和做VO。具有不同模式的executeQuery(),如下表中的QUERY_MODE_SCAN_VIEW_ROWS,QUERY_MODE_SCAN_ENTITY_ROWS,QUERY_MODE_SCAN_DATABASE_TABLES | QUERY_MODE_SCAN_ENTITY_ROWS。
- >當我們將ViewCriteria應用於上述模式時,它的行爲如何。VO的setQueryMode究竟如何工作?

讓我們叫InfoTable

標識如下表|開始|結束|國家|狀態
56 | 01-APR-16 | 31-DEC-16 |美| A
57 | 01-APR- 16 | 31-DEC-16 | IND | A
58 | 14-APR-16 | 31-DEC-16 |英國| N

注:這裏PrimarKey(ID,起始日期,結束日期)

燦我們可視化EO中的哪些數據,VO緩存像數據庫表一樣?
在此先感謝。

回答

1

queryMode確定虛擬組織如何與數據:

1)QUERY_MODE_SCAN_DATABASE_TABLES:總是從數據庫(默認模式獲取數據);

2)QUERY_MODE_SCAN_VIEW_ROWS:從現有行獲取數據,而不需要從數據庫(在內存中)實現它們;

3)QUERY_MODE_SCAN_ENTITY_ROWS:使用實體緩存(僅適用於基於實體的VOS)

排序: 當你調用排序方法QUERY_MODE_SCAN_DATABASE_TABLES,那麼你原來的SQL查詢通過ADFBC引擎更改爲:

select * from ([original select defined in your ViewObject]) order by field1; 

如果使用QUERY_MODE_SCAN_VIEW_ROWS排序,則在內存中使用Comparable接口;

過濾: 濾波過程使用ViewCriteria,其中也有queryMode: CRITERIA_MODE_QUERY:使用數據庫來檢索濾波數據。作爲示例排序ADFBC的動態也圍繞着你與外部原始查詢與WHERE子句和謂詞通過ViewCriteria調整選擇:

select * 
    from ([original select defined in your ViewObject]) 
    where field1=:field1 and field2 between :field2_start and :field2_end; 

CRITERIA_MODE_CACHE:所有的數據限制出現在內存中。