200 likes | 342 Views
INTRO TO BUSINESS COMPONENTS FOR JAVA (BC4J). Matt Fierst Computer Resource Team mjfierst@crtinc.com OracleWorld 2003 - Session 36321. Why Should I Care?. Efficiency Productivity Maintainability. Topics. What is BC4J? Why use BC4J? BC4J Architecture and Components
E N D
INTRO TO BUSINESS COMPONENTS FOR JAVA (BC4J) Matt Fierst Computer Resource Team mjfierst@crtinc.com OracleWorld 2003 - Session 36321 1
Why Should I Care? • Efficiency • Productivity • Maintainability 2
Topics • What is BC4J? • Why use BC4J? • BC4J Architecture and Components • Demo - BC4J in action 3
What is BC4J? • It is a bridge from the Relational world (database) to the Object world (Java) Java Application BC4J Database 4
What is BC4J? “Business Components for Java is JDeveloper’s programming framework for building multi-tier database applications from reusable business components.” 5
What is JDeveloper? • Oracle’s Java and XML development suite • Language-sensitive editors • Java Compiler • UML modeling tool • Tools, frameworks, and utilities to help write your code • Built-in web server and OC4J server to help test your code • Debuggers and profilers to help perfect your code • Wizards and utilities to help bundle and deploy your code 6
What is a Business Component? • Code that implements functionality associated with an application object • Java and XML • May interact with a database • May implement business rules • Encapsulates your business logic • Therefore, your presentation layer is much “cleaner” • Reusable • Flexible deployment • Deploy to client (e.g., application, applet) • Deploy to middle tier or database (e.g., servlet, JSP, Web Service, EJB, CORBA) 7
BC4J is Part of JDeveloper • “Programming Framework” • Wizards and tools for defining, customizing and testing components • Class library and custom JSP tags for developing your applications • Use any front end you wish • JSP, Struts, etc • Swing • XML • Deploy on any J2EE server 8
Why Use BC4J? • I could just as well do it all myself! • JDBC to connect to the database • java.sql.* or SQLJ to interact with the database • Besides, Java itself promotes encapsulation, reusability, etc. • True, but why re-invent the wheel? 9
Why use BC4J? (cont.) • Wizards let you declaratively define your business components • Specify the data you want (table, column) • BC4J generates the “plumbing” to interact with that table • You can focus on implementing your application-specifics 10
Why use BC4J? (cont.) • Tools help you use the components • oracle.jbo: library of classes to directly interact with them • Custom tag library to use in your JSPs • Tags tied to Java classes • Include the tag in your JSP, class methods are automatically invoked • BC4J can also generate a JSP app for you • This is NOT magic, though! • Quite simplistic • However, it could be a great starting point 11
Why use BC4J? (cont.) • Gives you the option to better divide development responsibility • Java-savvy developers can focus on components • Web-savvy developers can focus on presentation layer • Easier to learn the custom tags than to learn Java • BC4J handles all the database connection details for you • Built-in connection pooling 12
Why use BC4J? (cont.) • The downside: setting up these components takes time - planning and building • Depending on the application, and how it evolves, this could be time well spent • Isolation of business logic improves maintainability • Of the business logic • Of the presentation layer • Of the back-end database • The bottom line: Is BC4J right for EVERY application? • No • But, it’s a great tool to have in your toolbox! 13
BC4J Architecture Application BC4J AM Database 14
BC4J Architecture (cont.) • Types of Components: • Application Module (AM) • Container for organizing and deploying other components • Provides run-time context for defining and executing transactions • Takes care of database connections • Takes care of Master-Detail coordination • Takes care of row locking 15
BC4J Architecture (cont.) Application VO VO VO VO BC4J AM EO EO EO EO EO Database 16
BC4J Architecture (cont.) • Entity Object (EO) • Provides a wrapper for database structures • Create an EO for each table, view, or stored procedure • EOs contain Attributes, corresponding to columns or procedure parameters • View Object (VO) • Your application’s interface to the BC4J layer • Hide the complexity of the database from the application • Uses SQL query to specify filtered subsets of data from one or more EO • VO Attributes correspond to EO Attributes • Provide cached, navigable, modifiable result sets • Provide runtime dynamic linking, sorting, and filtering 17
BC4J Architecture (cont.) • Association • Relationships between EOs • Automatically created based on Foreign Keys • Manually created based on common Attributes • View Link • Relationships between VOs • Enforce Master-Detail filtering • Domain • User-defined data types for EO and VO Attributes • Define in a central location: • Validation rules • Default values • Error messages 18
DEMO • Our JSP application: • Uses the “scott” schema • Displays employee/department data • We want to build a page to list “worker bees” • Those employees who are not managers • First, we’ll try a JDBC approach • Then we’ll try two BC4J approaches • Create the components, manually write a JSP • Have JDeveloper generate a JSP application for us • For instructions for this demo, and code snippets, download paper - Session 36321 19
To Learn More • JDeveloper on-line help is a great place to start • JDeveloper samples • c:\jdev\BC4J\samples • OTN - sample code • http://otn.oracle.com/sample-code/products/jdev/content.html 20