Presentation is loading. Please wait.

Presentation is loading. Please wait.

A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019.

Similar presentations


Presentation on theme: "A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019."— Presentation transcript:

1

2 A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

3 Impedance Mismatch I love my tables DBA I love my objects and beans Java Developer

4 Overview  J2EE Overview  EJB Overview  Entity Bean Lifecycle for the DBAs  Persistence Options and related concerns  Optimizing CMP Entity beans for Oracle database  Other DBA Considerations  Additional Resources and Next Steps  Complete Your Survey ( Session Id#40019)

5 Mind boggling J2EE J2EE JSP JDBC EJB JNDI JTA JMS Servlet JCA

6 What is J2EE?  Java 2 Enterprise Edition (J2EE) – Platform to build scalable and portable applications in Java – Relies on a number of Java specifications  Servlets, JSPs, EJB, JMS, JDBC, JTA, JNDI, etc.  DBAs care most about JDBC,JTA and EJB  JDBC – Java APIs for Database access  JTA – Java APIs to manage transactions  EJB – Enterprise JavaBeans  Oracle Application Server Containers for J2EE (OC4J) is J2EE 1.3 compliant

7 Develop J2EE Applications with Oracle Application Server Database OHS Browser JSP Servlets JTA JMS JNDI Java Mail JAAS Java VM Oracle Application Server JDBC J2EE Container JCA EJBs (Session, Entity, MDBs) EJB Client EJB Client CORBA Client CORBA Client RMI http RMI-over-IIOP

8 What is EJB  Reusable components that run inside a container  Can be accessed either – Either local and remote Java programs – CORBA compliant client  EJB Container provides support for – Persistence – Access control – Transactions

9 Enterprise JavaBean Review EJB client OC4J Enterprise Services Naming, Transactions, Security Database EJB container EJB bean EJB remote object EJB home object EJB remote interface EJB home interface JMS Listener MDB bean JMS client

10 Types of EJBs  Session Beans – encapsulate business logic – Transient in nature, cannot survive crash ! – Stateless – Perform a task e.g. charge a credit – Stateful – Maintains state between calls e.g. shopping cart  Entity Beans – persistent in nature – Representation of data – Two types Bean Managed Persistence (BMP), Container Managed Persistence (JMS)  Message Driven beans – A Java Message Service (JMS) listener (listens on a Topic or Queue) – Reliably consume message – Can work with Oracle Advanced Queueing

11 Entity Beans Uncovered  Represent persistent objects  Have a Primary key for unique identification  BMP requires developers to code all persistence – Use JDBC to perform persistence  CMP requires container to do the persistence based on declarations – Container does database access based on declarations by developer

12 Container Managed Relationships  Only between CMP EJBs  Supports 1-1, 1-M, and M-M  Relationships can be unidirectional or bi-directional  Relationships are persistent just like EJBs  Can have DELETE-CASCADE property Customer id: int name: String creditRating: int Address id: int city: String zip: String *

13 Entity Bean Life Cycle Client EJB Container EJB Server create() Entity bean remove() ejbUnsetEntityContext() ejbRemove () ejbLoad() ejbStore() EJB object stub Bean constructor ejbCreate(…) primary key constructor ejbSetEntityContext() ejbPostCreate()

14 Entity Bean Lifecycle and database MethodOperationDB Operation ejbCreate()Create an entity bean instance INSERT to persist the bean instance ejbPostCreate()Set relationshipUPDATE foreign key or INSERT if deferred write ejbLoad()Load a bean instance using the supplied primary key SELECT statement to retrieve a database row ejbStore()Update the corresponding bean in the database UPDATE to a database row ejbRemove()Remove a bean instanceDELETE the record findByXXX()Find the beans based on a certain condition SELECT statement to fetch one or multiple rows

15 EJB Creation  Happens in 2 steps – ejbCreate  Basic insert statement – ejbPostCreate  Relationships made here  Deferred constraints important because of this 2 step process – Only way to deal with mandatory foreign keys

16 EJB Removal  Simple delete from database  Can support cascade-delete – Only on 1 side of 1-1 or 1-M relationships – Declared by tag when EJB is deployed X

17 Finding EJBs  EJB-QL is the EJBs language for queries  Similar to SQL-92 / SQL-99  Container creates findByPrimaryKey  Can create other finders – findAll selects whole table – Other finders limited only by EJB-QL – OC4J allows SQL more flexible than EJB-QL select distinct object(e) from Emp e where e.deptno = ?1

18 Loading EJB State  EJB is loaded when it is needed for operation – Happens after it is found with findBy method  Container handles loading EJB persistent state  Container loads all persistent attributes  Can do pessimistic or optimistic locking

19 Saving EJB State  Saving state occurs at end of transaction  By default, container optimizes when possible – Saves only changed attributes – Will not write out if no state changed  Developer can intervene with ejbStore method

20 The Classic N+1 Problem  The N + 1 problem – Mostly with BMPs, with some CMP engines – Beans located via finder methods – Bean finders return PK values N reads: select * from emp where empno = empPK; 1 read: select empno from emp where deptno = 100;  Container creates bean instances to return – Calls ejbLoad for each PK returned

21 J2EE Persistence Options  J2EE standards based options are – Direct JDBC from web-tier or EJB session beans – Entity beans with Bean Managed Persistence – Entity beans with Container Managed Persistence  Additional technologies (Related Sessions !!) – Java-to-relational frameworks such as Oracle Application Server TopLink – Oracle ADF (Application Development Framework)

22 Direct Access with JDBC  Developer codes all interactions with database – Queries, inserts, updates, deletes using JDBC API  Common design pattern used – Data Access Objects – Separates persistence from business logic – Avoids putting JDBC code directly in Servlet/JSPs  Nil to low overhead from container – Developer is responsible for opening/closing resources – Transactions managed programmatically  Concurrency considerations  DBA Concerns: Review SQL

23 Bean Managed Persistence  Using BMP – All database interactions are manually coded – Container calls your code when it performs an operation – Container still ultimately in control  Provides some implementation flexibility – Map to 1 or more tables, different storage systems – Make use of existing stored procedures  Performance perceptions and reality – Developer coded *may* be better than container generated – Inherent problem with (n + 1) SQL calls  DBA Concerns: Database schema is coded into bean, Review SQL

24 Container Managed Persistence  Using CMP – Developer specifies persistent attributes of object – Developer specifies how entity object maps to database – All JDBC code generated by container  Container is responsible for managing persistence  Container maintains relationships between objects  Requires less code than JDBC and BMP  Choice for persistence in J2EE Applications  DBA Concerns : Many !! If you are not using Oracle Application Server

25 CMP development and deployment Concerns  Container Managed Tables – Containers creates the tables and names those – Ask your developers to map to your schema  Container creates Primary key – If no primary key is assigned in Entity bean – OC4J names this column autoid by default  Container Managed Relationship – May create an extra table for maintaining relationship – You can use foreign key for mapping 1-M

26 Performance Concerns  Container generates the SQL – SQL statement that can cause performance degradation by making full table scans or unnecessary joins – Unnecessary Extra SQL statements  Developers specify finder methods that can make full table scans  How to tune database for use with CMPs

27 Optimizing CMP Entity beans for Oracle database  Reduce database operations  Use right concurrency mode and locking strategy  Tune your SQL/database

28 Reduce Database Operations  Enforce primary key constraint at database level – Avoid extra SQL for constraint checking by container  Exploit DELETE CASCADE at database level – Container generate multiple SQL statements  Defer EJB creation to end of transaction – This avoids an extra UPDATE statement  Batch update operations to end of transaction  Exploit eager loading of relationship  Reduce round trips with pre-fetch size  Avoid N+1 problem by switching off lazy-loading

29 Use Right Locking/Isolation Mode  Choose the right isolation level for entity beans – Avoid if possible at the bean level – COMMITTED performs better than Serializable  Choose right locking mode – Use Optimistic and Read-Only if possible – Pessimistic uses ‘SELECT FOR UPDATE’  Avoid database calls with Read-Only patterns

30 Database Tuning Tips for CMPs  Make sure that your finder /select method uses indexes.  Exploit statement caching by the container  Avoid findAll() on large tables as this makes full table scans  Most EJB systems are OLTP in nature so tuning redo is important  The basics of tuning any database are valid for EJBs  Use Statspack to find bottlenecks and tune your DB

31 OC4J Tools and Instrumentation  Dynamic Monitoring System (DMS) – Instrumentation of application and server – Oracle Application Server Performance Guide  Platform dependant document  P6Spy – Plug in JDBC driver to capture SQL – Good development tool – http://www.p6spy.com  Statspack

32 OracleAS Toplink – A Compelling Option  Improves developer productivity by providing a flexible O-R Framework – Avoiding manual coding of interactions with database – Have years of experience in Java to RDB mapping  Can be used in any J2EE application – Servlets/JSPs / EJBs (BMP/CMP)  Reduces the load on database – Resolving the N+1 problem – By using caching data in the middle-tier and reading ‘Just In Time’ – Minimizing database calls  Utilize the features provided by databases  Respect and work with database locks

33 Other DBA Concerns  Database user passwords – Used in data-sources for connection pooling – Stored in clear text, can be encrypted ! – Changes require restart of container  OC4J uses an Oracle database for commit coordinator for 2-Phase commit – Requires a 9i database as commit coordinator – Requires database links ?

34 JMS and Oracle AQ  OC4J uses two JMS providers – OC4J JMS – Internal/in-memory JMS – OracleJMS – based in Oracle AQ  JMS uses – Queues – single consumer – Topics – multiple consumers  OracleJMS persists messages in AQ tables – As DBAs you have to manage these objects

35 Summary  J2EE is a popular platform  Persistence is the greatest challenge for developers and may impact DBA’s life  DBAs and Developers work together to improve the quality of J2EE applications

36 Reminder – please complete the OracleWorld session survey Session Id : 40019 Thank you.

37 Next Steps..  Related Sessions – #40292 - Improving performance of Your J2EE Applications : Tips and Tricks, @ Moscone Room 202, Tuesday 8:30am – #40038 – Understanding the Impacts of J2EE Applications on Relational Databases, @ Moscone 135, Wednesday 1:00pm  Visit Oracle Application Server Booths in Demo Grounds  Attend OC4J Hands On Lab

38 otn.oracle.com Join Over 3,000,000 Developers! Free Software Downloads http://otn.oracle.com Free Technical Advice

39  Develop your career with Oracle’s experts – Web services, Forms Upgrade to the Web, TopLink, Business Intelligence, Integration, J2EE, Linux  Connect with your peers  Sign up at http://otn.oracle.com/events/otnworkshop FREE

40 A Q & Q U E S T I O N S A N S W E R S


Download ppt "A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019."

Similar presentations


Ads by Google