Sie sind auf Seite 1von 45

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?
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 UIX ADF 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 Dont 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
Data
Data
Data
Data
Data
rows
Data
Data
Data
Data
View
rows
SQL query
Data 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_NAME
FROM EMPLOYEES E, DEPARTMENTS D
WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID
EmployeeId
LastName
DepartmentId
DepartmentName
View Objects Dont 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_NAME
FROM EMPLOYEES E
EmployeesView
(Master)
SELECT D.DEPARTMENT_ID,
D.DEPARTMENT_NAME,
D.MANAGER_ID
FROM 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
Data
Data
Data Data
rows
Data
Data
Data View
rows
SQL query
Data
Data
Data Entity object
instances
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
Data
Data
Data Data
rows
Data
Data
Data View
rows
Data
Data
Data Entity object
instances
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
Departments
EmpDeptView
One View, Many Entities
Then each view row will
map to multiple entity
object instances
Data
Data
Data
Data
View
rows
Data
Data
Data
Data
Entity object
instances
Data
Data
Data
Data
Entity object
instances
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
Data
Data
Data
Data
View
rows
Data
Data
Data
Data
Entity object
instances
EmpDeptView
instance
Data
Data
Data
Data
View
rows
DeptLocView
instance
SQL-Only View Attributes
View attributes dont 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 of
EmployeesView
Instance of
DepartmentsView
Instance of DeptMgrLink
SELECT E.EMPLOYEE_ID,
E.LAST_NAME
FROM EMPLOYEES E
SELECT D.DEPARTMENT_ID,
D.DEPARTMENT_NAME,
D.MANAGER_ID
FROM DEPARTMENTS D
WHERE D.MANAGER_ID =
:current_employee_id

A More Complex Data Model
Master
Instance of
EmployeesView
Detail
Instance of
DepartmentsView
Detail
Instance of
EmployeesView
Independent
Instance 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

Das könnte Ihnen auch gefallen