lesson 07 - providing for efficient queries rev
TRANSCRIPT
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
1/30
?Copyright 2004, Oracle. Todos los derechos reservados.
7Suministro de Consultas Eficaces
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
2/30
Copyright 2004, Oracle. Todos los derechos reservados.
Objetivos
Al finalizar esta leccin, debera estar capacitado para:
Crear objetos de vista en modo experto
Utilizar consultas parametrizadas en objetos de vista
Implementar mtodos personalizados Crear un programa Java para probar mtodos
personalizados
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
3/30
Copyright 2004, Oracle. Todos los derechos reservados.
Customers
IDName
Status
Email
Orders
Id
CustomerId
OrderMode
OrderTotal
Visin General
Objeto de vista
select c.name,
o.order_total fromcustomers c,orders o wherec.id=o.customer_id
CustomerOrders
getFullName()
Mtodo personalizado
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
4/30
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 categora Query
del editor View Object.
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
5/30
Copyright 2004, Oracle. Todos los derechos reservados.
En el modo normal, JDeveloper mantiene asociacionesentre los atributos de entidad y las columnas de la base
de datos.
La edicin de una consulta en el modo experto puede
invalidar estas asignaciones.Por ejemplo, edite la consulta CustomersView:
Durante el tiempo de ejecucin, el valor del atributoStatus no se corresponde con el valor de la tabla
subyacente.
Si se realiza una actualizacin con la vista se produce
un error de bloqueo.
SELECT ID, NAME, initcap(STATUS) AS StatusFROM CUSTOMERS
Asignacin de Atributos en el Modo Experto
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
6/30
Copyright 2004, Oracle. Todos los derechos reservados.
Mantenimiento de Asignaciones de Atributos
en Modo Experto
El usuario es responsable de mantener la asignacin
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.
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
7/30Copyright 2004, Oracle. Todos los derechos reservados.
Objetos de Vista Basados en SQL
Un objeto de vista basado en SQL:
No se basa en ningn objeto de entidad
No se puede utilizar para insertar, actualizar o suprimir
Utilice objetos de vista basados en SQL para vistas de
slo consulta, que no necesitan la funcionalidad deobjetos de entidad.
Los objetos de vista basados en SQL proporcionan un
mejor rendimiento que los objetos de vista basados en
entidad.
SELECT... OV
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
8/30Copyright 2004, Oracle. Todos los derechos reservados.
Creacin 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.
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
9/30Copyright 2004, Oracle. Todos los derechos reservados.
Implementacin de Mtodos Personalizados
Para agregar mtodos personalizados a un objeto de
vista, modifique el archivoViewObjectRowImpl.java:
public String getCustFullName()
{
String custFullName = "";
custFullName = getCustFirstName() +
" " + getCustLastName();
return custFullName;}
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
10/30Copyright 2004, Oracle. Todos los derechos reservados.
Visualizacin de Mtodos en la Aplicacin Cliente
Muestre los mtodos de fila de cliente de objeto de vista:
getCustFirstName(), getCustLastName()
getCustFullName()
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
11/30Copyright 2004, Oracle. Todos los derechos reservados.
Creacin de un Cliente de Prueba
Para crear un cliente de prueba:
1. Instancie el mdulo de aplicacin.
2. Instancie el objeto de vista.
3. Busque y manipule los datos segn sea necesario.4. Llame a los mtodos personalizados segn sea
necesario.
5. Cierre el mdulo de aplicacin.
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
12/30Copyright 2004, Oracle. Todos los derechos reservados.
Instanciacin de un Mdulo de Aplicacin
Instancie el mdulo de aplicacin mediante la clase
Configuration.
Utilice el nombre completo cualificado de la aplicacin
y el nombre de la configuracin como argumentos.
// App module nameString _am = "model.OEModule";
// Configuration nameString _cf = "OEModuleLocal";
// Create an instance of the AppModule
ApplicationModule am =Configuration.createRootApplicationModule(_am,_cf);
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
13/30Copyright 2004, Oracle. Todos los derechos reservados.
Instanciacin de un Objeto de Vista y
Datos de Salida
Utilice findViewObject() para instanciar el objeto devista.
Itere a travs 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);
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
14/30Copyright 2004, Oracle. Todos los derechos reservados.
Llamada a Mtodos Personalizados
1. Recupere la fila de objeto de vista.
2. Llame a los mtodos 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());
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
15/30Copyright 2004, Oracle. Todos los derechos reservados.
Definicin de Parmetros para la ClusulaWhere
La clusula where de una consulta de objeto de vista puedecontener variables o parmetros.
Proporciona flexibilidad durante el tiempo de ejecucin
Puede ser de estilo JDBCcustomer_id = ?
Puede ser de estilo Oracle
customer_id = :1
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
16/30Copyright 2004, Oracle. Todos los derechos reservados.
Durante el tiempo de ejecucin, se pueden asignar
valores a los parmetros.
Definicin de Parmetros para la ClusulaWhere
Parmetros
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
17/30Copyright 2004, Oracle. Todos los derechos reservados.
Asignacin de Valores a Consultas con
Parmetros durante el Tiempo de Ejecucin
1. Asigne parmetros 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();
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
18/30Copyright 2004, Oracle. Todos los derechos reservados.
Creacin de un Cliente de Prueba: Cdigo
de Ejemplo
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
19/30Copyright 2004, Oracle. Todos los derechos reservados.
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
20/30Copyright 2004, Oracle. Todos los derechos reservados.
Creacin de un Objeto de Vista durante el
Tiempo de Ejecucin
//am is an ApplicationModuleString 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);
ViewObject queryItemsVo =am.createViewObjectFromQueryStmt("",
"select id, status, quantity from line_item");
Para crear un nuevo objeto de vista basado en unaentidad:
Para crear un nuevo objeto de vista basado en unaconsulta:
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
21/30Copyright 2004, Oracle. Todos los derechos reservados.
//am is an ApplicationModuleString 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);
ViewObject queryItemsVo =am.createViewObjectFromQueryStmt("",
"select id, status, quantity from line_item");
Creacin de un Objeto de Vista durante el
Tiempo de Ejecucin
Para crear un nuevo objeto de vista basado en unaentidad:
Para crear un nuevo objeto de vista basado en unaconsulta:
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
22/30Copyright 2004, Oracle. Todos los derechos reservados.
Compruebe el argumento de lnea de comandos.
Cree un objeto oracle.jbo.Key.
Llame a findByKey(), que devuelve una matriz de
objetos de fila.
Bsqueda de Datos por Clave 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);
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
23/30Copyright 2004, Oracle. Todos los derechos reservados.
Resumen
En esta leccin ha aprendido a:
Crear objetos de vista de modo experto y de
programacin
Personalizar ADF Business Components para queincluya mtodos personalizados
Utilizar consultas parametrizadas en objetos de vista
Probar los mtodos personalizados utilizando un
cliente Java de lnea de comandos
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
24/30Copyright 2004, Oracle. Todos los derechos reservados.
Prctica 7-1: Visin General
Esta prctica cubre los siguientes temas:
Creacin de un objeto de vista de programacin
Creacin de consultas parametrizadas
Creacin de mtodos personalizados para un objeto devista
Prueba de mtodos personalizados y suministro de
parmetros de consulta mediante un cliente Java de
lnea de comandos
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
25/30Copyright 2004, Oracle. Todos los derechos reservados.
Prctica 7-1
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
26/30
Copyright 2004, Oracle. Todos los derechos reservados.
Prctica 7-1
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
27/30
Copyright 2004, Oracle. Todos los derechos reservados.
Prctica 7-1
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
28/30
Copyright 2004, Oracle. Todos los derechos reservados.
Prctica 7-1
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
29/30
Copyright 2004, Oracle. Todos los derechos reservados.
Prctica 7-1
-
8/14/2019 Lesson 07 - Providing for Efficient Queries Rev
30/30
Prctica 7-1