JDeveloper 10g and Oracle ADF Business Components Getting the Most Out of Your Data

Post on 04-Feb-2016

66 views 0 download

description

JDeveloper 10g and Oracle ADF Business Components Getting the Most Out of Your Data. Avrom Roy-Faderman Senior Programmer November, 2005. Agenda. J2EE, ADF, and JDeveloper Why Business Components? Reading Data Changing Data Transactions Demo Q&A. What Is J2EE?. - PowerPoint PPT Presentation

Transcript of JDeveloper 10g and Oracle ADF Business Components Getting the Most Out of Your Data

JDeveloper 10g and Oracle ADF Business ComponentsGetting the Most Out of Your Data

Avrom Roy-FadermanSenior Programmer

November, 2005

Agenda

• J2EE, ADF, and JDeveloper• Why Business Components?• Reading Data• Changing Data• Transactions• Demo• Q&A

What Is J2EE?

• Java platform for multi-tier applications

• Open• Scalable• Traditionally difficult to use

3GL Much time spent on application

plumbing

Frameworks

• Library of classes Handle plumbing automatically XML files provide customization Can make Java more like a 4GL

ADF and MVC

Business Services

View (Web and Wireless Clients)

View and Controller (Desktop Clients)

Model

Controller (Web and Wireless Clients)

• Oracle ADF is a framework based on MVC architecture

ADF and MVC

ADF Business Components

ADF UIXADF Swing

ADF Data Bindings

Struts + ADF Extensions

• Oracle ADF is a framework based on MVC architecture

Agenda

• J2EE, ADF, and JDeveloper• Why Business Components?• Reading Data• Changing Data• Transactions• Demo• Q&A

Impedence Mismatch

•SQL•Tables, rows•Primary keys•Foreign keys•Transactions•GB, TB

•Java•Classes, instances•Memory references•Object members•Shared heap•100s of MB

ADF BC Bridges the Gap

•SQL•Tables, rows•Primary keys•Foreign keys•Transactions•GB, TB

•Java•Classes, instances•Memory references•Object members•Shared heap•100s of MB

ADF BC Functionality

• Reading data• Caching data• Writing data• Managing relationships• Managing transactions

What they Don’t Do

• Create user interface (view)• Organize the flow of the

application (controller)

Agenda

• J2EE, ADF, and JDeveloper• Why Business Components?• Reading Data• Changing Data• Transactions• Demo• Q&A

Reading Data

• ADF View Objects

• ADF View Links

ADF View Objects

• Retrieve data from the database

• Manage caches of data• “View object definitions”

contain SQL queries and act as templates for “view object instances”

ADF View Objects

• Each view object instance can execute the SQL query and cache the results

Database

View object instance

View object instance

DataData

DataDataData

rows

DataData

DataDataView

rows

SQL queryData retrieval

View Object Attributes

• Every query column maps to a view object attribute

• Those attributes are visible to the application

SELECT E.EMPLOYEE_ID, E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAMEFROM EMPLOYEES E, DEPARTMENTS DWHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID

EmployeeId

LastName

DepartmentId

DepartmentName

View Objects Don’t Write!

• Classes to do DML are too heavyweight if not needed

• Some query columns hard to map backwards

Reading Data

• ADF View Objects

• ADF View Links

ADF View Links

• “View link definitions”

relate a pair of view object

definitions

• View link definitions specify

master/detail relationships

between the SQL queries

ADF View Links

• View link definitions have

“Source” and “Destination”

attributes

• These attributes specify the

master-detail relationship Just like foreign key and primary key attributes

specify a foreign key relationship

ADF View Links

• A view link definition works like an additional WHERE clause applied to the detail

SELECT E.EMPLOYEE_ID, E.LAST_NAMEFROM EMPLOYEES E

EmployeesView(Master)

SELECT D.DEPARTMENT_ID, D.DEPARTMENT_NAME, D.MANAGER_IDFROM DEPARTMENTS D

DepartmentsView(Detail)

WHERE D.MANAGER_ID = :1

Source attribute

Destination attribute

Agenda

• J2EE, ADF, and JDeveloper• Why Business Components?• Reading Data• Changing Data• Transactions• Demo• Q&A

Changing Data

• ADF Entity Objects

• View and Entity Attributes

ADF Entity Objects

• “Entity object definitions” correspond to database tables.

• Entity object definitions are templates for “entity object instances,” which correspond to table rows.

View Objects and Entity Objects

• Instead of caching data themselves, view object instances can store data in entity object instances

Database

View object instance

View object instance

DataDataDataDatarows

DataDataDataViewrows

SQL query

DataDataDataEntity objectinstances

Data retrieval

View Objects and Entity Objects

• The entity object instances can write back to the database

• Entity object definitions can specify validation rules

Database

View object instance

View object instance

DataDataDataDatarows

DataDataDataViewrows

DataDataDataEntity objectinstances

DML

Entity Object Attributes

• Every table column maps to an entity object attribute

EmployeeId

FirstName

LastName

Salary

EMPLOYEE_ID FIRST_NAME LAST_NAME SALARY ...

Changing Data

• ADF Entity Objects

• View and Entity Attributes

View and Entity Attributes

• Every view object attribute can map to an entity attribute

EmployeeId

FirstName

LastName

DepartmentId

EmployeeId

LastName

DepartmentId

DepartmentName

One View, Many Entities

• One view object definition can map to multiple entity object definitions

EmployeeId

FirstName

LastName

DepartmentId

EmployeeId

LastName

DepartmentId

DepartmentName

DepartmentId

DepartmentName

ManagerId

LocationId

Employees

DepartmentsEmpDeptView

One View, Many Entities

• Then each view row will map to multiple entity object instances

DataDataDataDataViewrows

DataDataDataDataEntity objectinstances

DataDataDataDataEntity objectinstances

Employees

Departments

One Entity, Many Views

• Multiple view object definitions can map to a single entity object definition

EmployeeId

LastName

DepartmentId

DepartmentName

DepartmentId

DepartmentName

ManagerId

LocationId

EmpDeptView

DepartmentId

DepartmentName

LocationId

LocationName

DeptLocView

One Entity, Many Views

• Then different view object instances can share data

DataData

DataDataView

rows

DataData

DataDataEntity object

instances

EmpDeptViewinstance

DataData

DataDataView

rows

DeptLocViewinstance

SQL-Only View Attributes

• View attributes don’t need to map to entity attributes at all

• Then they must be read-only• E.g.: Caclulated query

columns

Read-Only View Objects

• Have only SQL-Only attributes

• Do not use entity objects at all

• Read-only access to data• But

Agenda

• J2EE, ADF, and JDeveloper• Why Business Components?• Reading Data• Changing Data• Transactions• Demo• Q&A

Application Modules

• Application modules package up

the data and present it to the

rest of the application

• The application always talks to

the business components

through the application module

Application Module Instances

• Each instance (user) of the

application will get its own

application module instance

• The application module instance

contains view object instances

• View object instances use entity

object instances to write

The Data Model

• The view object instances in an application module instance are joined in master-detail relationships by “view link instances”

• The resulting tree is called the “data model”

A Simple Data Model

Instance ofEmployeesViewInstance of

EmployeesView

Instance ofDepartmentsViewInstance of

DepartmentsView

Instance of DeptMgrLink

SELECT E.EMPLOYEE_ID, E.LAST_NAMEFROM EMPLOYEES E

SELECT D.DEPARTMENT_ID, D.DEPARTMENT_NAME, D.MANAGER_IDFROM DEPARTMENTS D

WHERE D.MANAGER_ID = :current_employee_id

A More Complex Data Model

MasterInstance of

EmployeesViewMaster

Instance ofEmployeesView

DetailInstance of

DepartmentsViewDetail

Instance ofDepartmentsView

DetailInstance of

EmployeesViewDetail

Instance ofEmployeesView

IndependentInstance of

DepartmentsViewIndependentInstance of

DepartmentsView

Application Module Definitions

• Templates for application

module instances

• Specify which view object

and view link instances

should go in the data model

Data Consistency

• Each application module instance has its own set of view and entity caches

• Two locking mode choices “Pessimistic” locks (the default) acquired on DB

rows as soon as data is changed in the cache

“Optimistic” locks acquired just before

executing DML

Demo

Q & A