No Slide Title

Download Report

Transcript No Slide Title

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
• Oracle ADF is a framework
based on MVC architecture
View and Controller
(Desktop Clients)
View (Web and
Wireless Clients)
Controller (Web and
Wireless Clients)
Model
Business Services
ADF and MVC
• Oracle ADF is a framework
based on MVC architecture
ADF Swing
ADF UIX
Struts +
ADF Extensions
ADF Data Bindings
ADF Business Components
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
View object
instance
SQL query
Database
Data
Data
Data
Data
Data
rows
Data
Data
Data
Data
View
rows
Data retrieval
View Object Attributes
• Every query column maps to
a view object attribute
• Those attributes are visible
to the application
EmployeeId
LastName
DepartmentId
DepartmentName
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
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
Source attribute
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
WHERE D.MANAGER_ID =
:1
(Detail)
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
View object
instance
Data
Data
View
Data
rows
SQL query
Database
Data
Data
Data
Data
rows
Data retrieval
Data
Data
Entity
object
Data
instances
View Objects and Entity Objects
• The entity object instances can
write back to the database
• Entity object definitions can
specify validation rules
View object
instance
Database
Data
Data
Data
Data
rows
DML
Data
Data
View
Data
rows
Data
Data
Entity
object
Data
instances
Entity Object Attributes
• Every table column maps to
an entity object attribute
EMPLOYEE_ID FIRST_NAME
LAST_NAME SALARY
...
EmployeeId
FirstName
LastName
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
LastName
DepartmentId
DepartmentName
EmployeeId
FirstName
LastName
DepartmentId
…
One View, Many Entities
• One view object definition
can map to multiple entity
object definitions
EmployeeId
FirstName
LastName
DepartmentId
…
EmployeeId
LastName
DepartmentId
DepartmentName
Employees
EmpDeptView
DepartmentId
DepartmentName
ManagerId
LocationId
…
Departments
One View, Many Entities
• Then each view row will
map to multiple entity
object instances
Data
Data
Data
View
Data
rows
Data
Data
Data
Entity
object
Data
instances
Employees
Departments
Data
Data
Data
Entity
object
Data
instances
One Entity, Many Views
• Multiple view object
definitions can map to a
single entity object
definition
EmployeeId
LastName
DepartmentId
DepartmentName
EmpDeptView
DepartmentId
DepartmentName
ManagerId
LocationId
…
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
View
rows
DeptLocView
instance
EmpDeptView
instance
Data
Data
Data
Dataobject
Entity
instances
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 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