Sei sulla pagina 1di 30

7?

Suministro de Consultas Eficaces

Copyright © 2004, Oracle. Todos los derechos reservados.


Objetivos

Al finalizar esta lección, debería estar capacitado para:


• Crear objetos de vista en modo experto
• Utilizar consultas parametrizadas en objetos de vista
• Implementar métodos personalizados
• Crear un programa Java para probar métodos
personalizados

Copyright © 2004, Oracle. Todos los derechos reservados.


Visión General

Objeto de vista
CustomerOrders
Customers
select c.name,
ID o.order_total from
Name customers c,
Status orders o where
Email c.id=o.customer_id

Orders

Id Método personalizado
CustomerId
OrderMode getFullName()
OrderTotal

Copyright © 2004, Oracle. Todos los derechos reservados.


Objetos de Vista de Modo Experto

Utilice las consultas de modo experto para crear objetos


de vista personalizados. Seleccione el modo experto en
el asistente Create View Object o en la categoría Query
del editor View Object.

Copyright © 2004, Oracle. Todos los derechos reservados.


Asignación de Atributos en el Modo Experto

• En el modo normal, JDeveloper mantiene asociaciones


entre los atributos de entidad y las columnas de la base
de datos.
• La edición de una consulta en el modo experto puede
invalidar estas asignaciones.
Por ejemplo, edite la consulta CustomersView:
SELECT ID, NAME, initcap(STATUS) AS Status
FROM CUSTOMERS

• Durante el tiempo de ejecución, el valor del atributo


Status no se corresponde con el valor de la tabla
subyacente.
• Si se realiza una actualización con la vista se produce
un error de bloqueo.

Copyright © 2004, Oracle. Todos los derechos reservados.


Mantenimiento de Asignaciones de Atributos
en Modo Experto

• El usuario es responsable de mantener la asignación


correcta entre los atributos de entidad y las columnas
de la base de datos.
• Para el ejemplo de estado del cliente:
– Suprima el atributo Status del objeto de vista.
– Cree un nuevo atributo calculado denominado Status.

Copyright © 2004, Oracle. Todos los derechos reservados.


Objetos de Vista Basados en SQL

• Un objeto de vista basado en SQL:


– No se basa en ningún objeto de entidad
– No se puede utilizar para insertar, actualizar o suprimir
• Utilice objetos de vista basados en SQL para vistas de
sólo consulta, que no necesitan la funcionalidad de
objetos de entidad.
• Los objetos de vista basados en SQL proporcionan un
mejor rendimiento que los objetos de vista basados en
entidad.

SELECT... OV

Copyright © 2004, Oracle. Todos los derechos reservados.


Creación de un Objeto de Vista Basado en SQL

• Cree un objeto de vista sin seleccionar un objeto de


entidad en el asistente View Object.
• Haga clic en el separador Query del asistente e
introduzca la consulta en el campo proporcionado.

Copyright © 2004, Oracle. Todos los derechos reservados.


Implementación de Métodos Personalizados

Para agregar métodos personalizados a un objeto de


vista, modifique el archivo ViewObjectRowImpl.java:

public String getCustFullName()


{
String custFullName = "";
custFullName = getCustFirstName() +
" " + getCustLastName();
return custFullName;
}

Copyright © 2004, Oracle. Todos los derechos reservados.


Visualización de Métodos en la Aplicación Cliente

Muestre los métodos de fila de cliente de objeto de vista:


• getCustFirstName(), getCustLastName()
• getCustFullName()

Copyright © 2004, Oracle. Todos los derechos reservados.


Creación de un Cliente de Prueba

Para crear un cliente de prueba:


1. Instancie el módulo de aplicación.
2. Instancie el objeto de vista.
3. Busque y manipule los datos según sea necesario.
4. Llame a los métodos personalizados según sea
necesario.
5. Cierre el módulo de aplicación.

Copyright © 2004, Oracle. Todos los derechos reservados.


Instanciación de un Módulo de Aplicación

• Instancie el módulo de aplicación mediante la clase


Configuration.
• Utilice el nombre completo cualificado de la aplicación
y el nombre de la configuración como argumentos.

// App module name


String _am = "model.OEModule";
// Configuration name
String _cf = "OEModuleLocal";
// Create an instance of the AppModule
ApplicationModule am =
Configuration.createRootApplicationModule(_am,_cf);

Copyright © 2004, Oracle. Todos los derechos reservados.


Instanciación de un Objeto de Vista y
Datos de Salida

• Utilice findViewObject() para instanciar el objeto de


vista.
• Itere a través de Rowset.
• Muestre los datos con getAttribute().
ViewObject vo = am.findViewObject("CustomersView");
while (vo.hasNext()) {
CustomersViewRow row = (CustomersViewRow) vo.next();
System.out.println("Customer First Name is " +
row.getAttribute("CustLastName));
}
Configuration.releaseRootApplicationModule(am,true);

Copyright © 2004, Oracle. Todos los derechos reservados.


Llamada a Métodos Personalizados

1. Recupere la fila de objeto de vista.


2. Llame a los métodos publicados en el objeto de vista.

System.out.println("Customer First Name: " +


row_Cust.getCustFirstName());
System.out.println("Customer Last Name: " +
row_Cust.getCustLastName());
System.out.println("Customer Full Name: " +
row_Cust.getCustFullName());

Copyright © 2004, Oracle. Todos los derechos reservados.


Definición de Parámetros para la Cláusula Where

La cláusula where de una consulta de objeto de vista puede


contener variables o parámetros.
• Proporciona flexibilidad durante el tiempo de ejecución
• Puede ser de estilo JDBC
customer_id = ?
• Puede ser de estilo Oracle
customer_id = :1

Copyright © 2004, Oracle. Todos los derechos reservados.


Definición de Parámetros para la Cláusula Where

Durante el tiempo de ejecución, se pueden asignar


valores a los parámetros.

Parámetros

Copyright © 2004, Oracle. Todos los derechos reservados.


Asignación de Valores a Consultas con
Parámetros durante el Tiempo de Ejecución

1. Asigne parámetros en el cliente.


2. Una vez asignados, vuelva a ejecutar la consulta.

ViewObject vo = am.findViewObject("CustParamView");
vo.setWhereClauseParam(0, "S");
vo.setWhereClauseParam(1,
new oracle.jbo.domain.Number(10));
vo.executeQuery();

Copyright © 2004, Oracle. Todos los derechos reservados.


Creación de un Cliente de Prueba: Código
de Ejemplo

Copyright © 2004, Oracle. Todos los derechos reservados.


Copyright © 2004, Oracle. Todos los derechos reservados.
Creación de un Objeto de Vista durante el
Tiempo de Ejecución
• Para crear un nuevo objeto de vista basado en una
entidad:
//am is an ApplicationModule
String entity = "orders.LineItem";
String selectClause = "id, status, quantity";
String fromClause = "line_item";
String whereClause = "status = 'S'";
ViewObject shippedItemsVo =
am.createViewObjectFromQueryClauses(null, entity,
selectClause, fromClause, whereClause, null);

• Para crear un nuevo objeto de vista basado en una


consulta:
ViewObject queryItemsVo =
am.createViewObjectFromQueryStmt("",
"select id, status, quantity from line_item");

Copyright © 2004, Oracle. Todos los derechos reservados.


Creación de un Objeto de Vista durante el
Tiempo de Ejecución
• Para crear un nuevo objeto de vista basado en una
entidad:
//am is an ApplicationModule
String entity = "orders.LineItem";
String selectClause = "id, status, quantity";
String fromClause = "line_item";
String whereClause = "status = 'S'";
ViewObject shippedItemsVo =
am.createViewObjectFromQueryClauses(null, entity,
selectClause, fromClause, whereClause, null);

• Para crear un nuevo objeto de vista basado en una


consulta:
ViewObject queryItemsVo =
am.createViewObjectFromQueryStmt("",
"select id, status, quantity from line_item");

Copyright © 2004, Oracle. Todos los derechos reservados.


Búsqueda de Datos por Clave de Fila

• Compruebe el argumento de línea de comandos.


• Cree un objeto oracle.jbo.Key.
• Llame a findByKey(), que devuelve una matriz de
objetos de fila.
if (args.length==0) {
system.out.println("Customer ID is required");
System.exit(0);
}
Key custKey = new Key(new Object[] {args[0]});
Row[] customers = vo.findByKey(custKey,1);

Copyright © 2004, Oracle. Todos los derechos reservados.


Resumen

En esta lección ha aprendido a:


• Crear objetos de vista de “modo experto” y de
programación
• Personalizar ADF Business Components para que
incluya métodos personalizados
• Utilizar consultas parametrizadas en objetos de vista
• Probar los métodos personalizados utilizando un
cliente Java de línea de comandos

Copyright © 2004, Oracle. Todos los derechos reservados.


Práctica 7-1: Visión General

Esta práctica cubre los siguientes temas:


• Creación de un objeto de vista de programación
• Creación de consultas parametrizadas
• Creación de métodos personalizados para un objeto de
vista
• Prueba de métodos personalizados y suministro de
parámetros de consulta mediante un cliente Java de
línea de comandos

Copyright © 2004, Oracle. Todos los derechos reservados.


Práctica 7-1

Copyright © 2004, Oracle. Todos los derechos reservados.


Práctica 7-1

Copyright © 2004, Oracle. Todos los derechos reservados.


Práctica 7-1

Copyright © 2004, Oracle. Todos los derechos reservados.


Práctica 7-1

Copyright © 2004, Oracle. Todos los derechos reservados.


Práctica 7-1

Copyright © 2004, Oracle. Todos los derechos reservados.


Práctica 7-1

Copyright © 2004, Oracle. Todos los derechos reservados.

Potrebbero piacerti anche