a dba perspective on j2ee debu panda principal product manager oracle corporation session id: 40019
TRANSCRIPT
![Page 1: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/1.jpg)
![Page 2: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/2.jpg)
A DBA Perspective on J2EE
Debu PandaPrincipal Product Manager
Oracle Corporation
Session id: 40019
![Page 3: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/3.jpg)
Impedance Mismatch
I love my tables
DBA
I love my objects and beans
Java Developer
![Page 4: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/4.jpg)
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)
![Page 5: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/5.jpg)
Mind boggling J2EE
J2EE
JSP
JDBC
EJB
JNDI
JTA
JMS
Servlet
JCA
![Page 6: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/6.jpg)
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
![Page 7: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/7.jpg)
Develop J2EE Applications with Oracle Application Server
Database
OHSOHS
Browser
JSPJSP ServletsServlets
JTA
JMS
JND
I
Java Mail
JAA
S
Java VM
Oracle Application Server
JDB
C
J2EE ContainerJ2EE Container
JCA
EJBsEJBs(Session, Entity, MDBs)(Session, Entity, MDBs)
EJBClientEJB
Client
CORBAClient
CORBAClient
RMI
http
RMI-over-IIOP
![Page 8: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/8.jpg)
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
![Page 9: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/9.jpg)
Enterprise JavaBean Review
EJB client
OC4J
Enterprise ServicesNaming, 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
![Page 10: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/10.jpg)
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
![Page 11: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/11.jpg)
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
![Page 12: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/12.jpg)
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: intname: StringcreditRating: int
Address
id: intcity: Stringzip: String
*
![Page 13: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/13.jpg)
Entity Bean Life Cycle
Client
EJB ContainerEJB Server
create()
Entity bean
remove()
ejbUnsetEntityContext()ejbRemove()
ejbLoad()
ejbStore()EJB object stub
Bean constructorejbCreate(…)
primary key constructorejbSetEntityContext()ejbPostCreate()
![Page 14: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/14.jpg)
Entity Bean Lifecycle and database
Method Operation DB OperationejbCreate() Create an entity bean
instanceINSERT to persist the bean instance
ejbPostCreate() Set relationship UPDATE 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 instance DELETE the record
findByXXX() Find the beans based on a certain condition
SELECT statement to fetch one or multiple rows
![Page 15: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/15.jpg)
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
![Page 16: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/16.jpg)
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
![Page 17: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/17.jpg)
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
![Page 18: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/18.jpg)
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
![Page 19: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/19.jpg)
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
![Page 20: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/20.jpg)
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
![Page 21: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/21.jpg)
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)
![Page 22: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/22.jpg)
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
![Page 23: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/23.jpg)
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
![Page 24: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/24.jpg)
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
![Page 25: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/25.jpg)
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
![Page 26: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/26.jpg)
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
![Page 27: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/27.jpg)
Optimizing CMP Entity beans for Oracle database
Reduce database operations Use right concurrency mode and
locking strategy Tune your SQL/database
![Page 28: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/28.jpg)
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
![Page 29: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/29.jpg)
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
![Page 30: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/30.jpg)
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
![Page 31: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/31.jpg)
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
![Page 32: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/32.jpg)
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
![Page 33: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/33.jpg)
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
?
![Page 34: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/34.jpg)
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
![Page 35: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/35.jpg)
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
![Page 36: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/36.jpg)
Reminder – please complete the OracleWorld session survey
Session Id : 40019Thank you.
![Page 37: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/37.jpg)
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
![Page 38: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/38.jpg)
otn.oracle.com
Join Over 3,000,000 Developers!
Free Software Downloads
http://otn.oracle.com
Free Technical Advice
![Page 39: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/39.jpg)
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
![Page 40: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019](https://reader030.vdocument.in/reader030/viewer/2022032604/56649e665503460f94b6064a/html5/thumbnails/40.jpg)
AQ&Q U E S T I O N SQ U E S T I O N S
A N S W E R SA N S W E R S