Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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