Статьи

Только для чтения ViewObject и декларативный режим SQL

Вступление

Декларативный режим SQL считается одним из наиболее ценных преимуществ объектных представлений. В этом режиме SQL VO генерируется во время выполнения в зависимости от атрибутов, отображаемых в пользовательском интерфейсе. Например, если какая-либо страница содержит таблицу только с двумя столбцами EmployeeId и FirstName, запрос будет сгенерирован как «выберите Employee_ID, First_Name from Employees». Эта функция может значительно улучшить производительность приложения ADF. Но как быть с объектами представления, доступными только для чтения или на основе SQL? JDeveloper не позволяет вам выбирать режим SQL для VO на основе SQL. Только режим «Эксперт» может использоваться без возможности генерировать запрос на лету. Но все возможно.

В этом посте у нас есть пример некоторого объекта представления VEmployees на основе SQL:

Давайте сгенерируем класс View Object Definition:

Мы собираемся переопределить некоторые методы:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@Override
public boolean isRuntimeSQLGeneration()
{
   return true;
}
 
@Override
public boolean isFullSql()
 {
    return false;
 }
 
@Override
//In our case we know exactly the clause FROM
public String buildDefaultFrom(AttributeDef[] attrDefs,
                               SQLBuilder builder,
                               BaseViewCriteriaManagerImpl vcManager)
{
   return "Employees";
}
 
@Override
//Setting "Selected in Query" property for each attribute except PK
protected void createDef()
 {
   for (AttributeDef at : getAttributeDefs())
    if (!at.isPrimaryKey())
      ((AttributeDefImpl) at).setSelected(false);  
 }

На самом деле, это все! Давайте проверим это.

Для страницы, показывающей полный набор атрибутов, у нас есть результат:

И сгенерированный запрос (я использую анализатор ODL):

Для страницы только с двумя атрибутами мы имеем следующий результат:

И запрос:

Пример приложения для этого поста требует JDeveloper 11.1.2.1.0 и стандартной схемы управления персоналом.

Ссылка: доступный только для чтения режим ViewObject и декларативный SQL от нашего партнера по JCG Евгения Федоренко в блоге ADF Practice .