ts2836 Enterprise JavaBeans (EJB) Technologies 3 0 Simplifying and Enhancing the EJB Persistence Mod

background image

java.sun.com/javaone/sf

| 2004 JavaOne

SM

Conference | Session TS-2836

1

Enterprise

JavaBeans

TM

(EJB™)

3.0 Architecture

Simplified Persistence

Linda DeMichiel
EJB™ Specification Lead
Sun Microsystems
java.sun.com/j2ee

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

2

Goal of This Talk

Learn about the new simplifications to

persistence in the EJB™ 3.0 architecture

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

3

What’s New?

POJO Entity Beans

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

4

Agenda

Goals of

EJB™

3.0 Architecture

Why We Need to Simplify Persistence

EJB™

3.0 Entity Bean Drill Down

Entity Bean Goals

Simplified Persistence Model

Query Language Enhancements

Summary and Current Status
Where to Get More Info at JavaOne

SM

Conference

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

5

EJB™ 3.0 Architecture Expert Group

Agenda

Simplify EJB™ architecture—make it easier

to use

Improve developer productivity

Facilitate test-driven development

Capture broader range of developers

Conduct critical examination of EJB™

architecture complexity

Entity Beans are one of the more complex areas

of EJB™ architecture

Need to simplify them too

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

6

EJB™ 3.0 Architecture Expert Group

Apache Software Foundation:

Jeremy Boynes

BEA: Seth White, Cedric Beust
Borland: Jishnu Mitra
E.piphany: Reza Behforooz
Fujitsu-Siemens: Anton

Vorsamer

IBM: Jim Knutson
IONA: Conrad O'Dea
JBoss: Marc Fleury, Gavin King
Nokia: Vic Zaroukian
Novell: YongMin Chen
Oracle: Michael Keith, Olivier

Caudron

Pramati: Hemant Khandelwal

SAP: Harald Mueller
SAS Institute: Rob Saccoccio
SeeBeyond: Ugo Corda
Sun Microsystems: Linda

DeMichiel

Sybase: Evan Ireland
Tibco: Shivajee Samdarshi
Tmax Soft: JaeWoong Chung,

Woo Jin Kim

Individuals:
David Blevins
Scott Crawford
Olivier Ihns
Richard Monson-Haefel
Suneet Shah

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

7

Agenda

Goals of EJB™ 3.0 Architecture

Why We Need to Simplify Persistence

EJB™ 3.0 Entity Bean Drill Down

Entity Bean Goals
Simplified Persistence Model

Query Language Enhancements

Summary and Current Status

Where to Get More Info at JavaOne

SM

Conference

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

8

EJB™ Architecture Persistence

(Pre-EJB

3.0 Architecture)

Persistence management is a service that the

EJB™ container provides

As a service, persistence management is API based

Uses programming protocols, service hooks,

callback facilities, ...

Entity beans must be written to container contracts

Integrated with other EJB™ architecture services

(relationships, query, transactions, security, ... )

Intended as an ease-of-development facility

What is needed now is simpler model, better

modeling and query capabilities, + quality

of service

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

9

EJB™ 1.1 Architecture CMP

Instance-variable based “transparent” approach

Developer denotes persistent state

Container provides persistence management

What was wrong with it?

Remote components, coarse-grained, heavyweight

Did not scale performance-wise or modeling-wise

No associations

Non-portable finder methods only

Not really meant for O/R mapping

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

10

EJB™ 2.0 Architecture CMP

Froze development of EJB™ 1.1 architecture

approach and started over

Introduced get/set model

Rejected instance-variable-based approach

Hooks for dirty detection; management of faulting

Get method returns a copy

Relationships managed by container (CMRs)

Entity beans are (always) persistent objects

Creating an entity bean creates a persistent object

CMP and CMR “fields” are always persistent

Targeted at local access, not remote

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

11

EJB™ 2.0 Architecture

Persistence Model

Enables light-weight implementation

Entities typically accessed through local interfaces

Transactions typically started in session bean

or Web tier

Methods are often “unchecked”

Provides a standardized SQL-like query

language integrated with entity model

(EJB™ QL)

Usage has supplanted that of BMP

Held back by need for more EJB™ QL

High-quality, high-performance implementations

well-established in industry

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

12

What’s the Problem?

Formal model

Targeted at encapsulation of management of state

Beans relatively light-weight, but still heavy-

weight programming model

4 classes + deployment descriptor

Requires implementation of javax.ejb.EntityBean

Deployment descriptor

Can’t test logic outside the container

Abstract classes

CMRs

Create mechanisms, Home interface

Entities not serializable, so need DTOs

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

13

What’s Missing?

Lack of sufficient modeling capabilities

No polymorphism

No support for implementation inheritance

Lacks O/R mapping specification

Query language still missing some

important features

Projection

Subqueries

Outer joins

Dynamic queries

Additional functions, etc.

Provision for direct SQL queries

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

14

How Do We Improve It?

Goals of

EJB™

3.0 Architecture

Why We Need to Simplify Persistence

EJB™

3.0 Entity Bean Drill Down

Entity Bean Goals
Simplified Persistence Model
Query Language Enhancements

Summary and Current Status
Where to Get More Info at JavaOne

SM

Conference

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

15

EJB 3.0 Architecture’s Goals for CMP

Simplify programming model

Reduce number of programming artifacts

POJO/JavaBeans™ like other EJB™ 3.0 beans

Eliminate deployment descriptor from

developer’s view

Make instances usable outside the container

Facilitate testability

Remove need for data transfer objects (DTOs)

Support for lightweight domain modeling

Inheritance and polymorphism

Object/Relational mapping metadata

More complete query capabilities

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

16

How?

Obvious Choices:

1) Yet another persistence model?

or

2) Simplify and fix existing model?

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

17

Process We Went Through

Looked at technical options and functionality

Identified items that most needed to be fixed

Complexity

Lack of testability outside the container

Need for improved modeling and querying

capabilities

DTO issues

Identified what we needed to preserve

EJB™ QL + enhancement of it

Container’s ability to interpose and manage

Tx / security / caching / faulting control, ...

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

18

Process We Went Through (Cont.)

Examined functionality trade-offs

POJOs vs. interfaces

New vs. factories

CMRs vs. testability

Homes

Converged on self-consistent set

of functionality

Serious exercise in prioritization

Meant removing a few things we liked

Kept focus centered on core object/

relational mapping

Non-relational databases, etc. a non-issue

Relational-database centric

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

19

POJO Entity Beans

Concrete classes (no longer abstract)

No required bean interfaces

Support new()

Usable outside the EJB™ container

As detached entities

For testing of business logic

getter/setter methods

Can contain logic (for validation, transformation, etc.)

Collection interfaces for relationships

Entities are not remotable

No required callback interfaces

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

20

EntityManager

No required entity bean Homes

EntityManager serves as untyped “home”

Provides lifecycle operations

create()

remove()

merge()

Etc. (flush, refresh, evict...)

Factory for Query objects

Can wrapper EntityManager to provided

typed homes

Can also use metadata

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

21

Lifecycle Model for Entities

new()

Instance is not yet managed

create()

Instance becomes managed

remove()

Instance is removed

Detached instances

Instances existing outside of original transaction

context in which created/retrieved

Serialized to other tiers

merge() merges their state back into

persistence context

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

22

POJO Entity Beans

Lots of points of control

Over lifecycle

CASCADE capabilities (CREATE, REMOVE, ALL, ...)

Scope of persistence context

Fetch/faulting behavior

FETCH JOINS, O/R mapping metadata

Isolation semantics

Metadata

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

23

EJB™ 3.0 Architecture

Entity Bean Example

@Entity public class Customer {

private Long id;
private String name;
private Address address;
private HashSet orders = new HashSet();

@Id(generate=AUTO) public Long getID() {
return id;
}


protected void setID (Long id) {
this.id = id;

}

...

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

24

EJB™ 3.0 Architecture

Entity Bean Example (Cont.)

...

@OneToMany(cascade=ALL)
public Set<Order> getOrders() {
return orders;
}

public void setOrders(Set<Order> orders) {
this.orders = orders;
}
}

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

25

Client View

@Stateless public class OrderEntryBean {

private EntityManager em;

@Inject void

setEntityManager

(EntityManager em){

this.em = em;
}

public void enterOrder(int custID, Order
newOrder){
Customer c = em.find(“Customer”, custID);
c.getOrders().add(newOrder);
newOrder.setCustomer(c);
}

// other business methods
}

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

26

Object/Relational Mapping Approach

What do we mean by this?

Choice spectrum:

Database-centric approach

Object-centric approach

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

27

O/R Mapping Approach

Developer is aware of mapping between

database schema and object schema

At query language level

At object/data transfer and faulting level

Hooks provided over mapping between

relational database and set of Java™ instances

Semantically explicit approach

Programmer is in control

Classes are transparent; mapping is explicit

Points of control

Query language

Metadata

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

28

Application Developer’s Strategy

Construction and manipulation of

“persistence context”

Set of managed persistent instances used

by application within a particular scope

Application developer knows the needed

shape of this

Use queries to bring in data sets of interest

Finder/select queries

Report queries (projection)

Outer join queries control prefetch

Use metadata to control faulting patterns

for navigational access

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

29

Building Up the Persistence Context

Queries

Most efficient way to access relational data

EJB™ QL significantly enhanced

Outer Fetch Joins

Very useful for explicitly controlling data prefetch

Minimize database roundtrips

Programmer knows data access patterns

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

30

Example: Outer Fetch Join

SELECT c
FROM Customer c LEFT JOIN FETCH c.orders
WHERE c.state = 'CA'

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

31

Use Java™ Application Metadata

to Tune Access

Relationship fetching

FetchType

EAGER

LAZY

Optimistic locking support

@Version

@Timestamp

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

32

Mapping Classes to Tables

Use Java™ application metadata to

specify mapping

Support for usual inheritance strategies

Table per class hierarchy

Table per class

Joined subclass

Default type mappings defined by spec

Custom type mappings for finer control

and flexibility

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

33

Inheritance Mapping Example

@Entity
@Table(name=”CUST”)
@Inheritance(strategy=SINGLE_TABLE,
discriminatorType=STRING,
discriminatorValue=”CUST”)
public class Customer {...}

@Entity
@Inheritance(discriminatorValue=”VCUST”)
public class ValuedCustomer extends Customer{...}

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

34

Same Example, Using Defaults

@Entity
public class Customer {...}

@Entity
public class ValuedCustomer extends Customer {...}

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

35

Extended Persistence Context

Persistence context typically corresponds to a

single JTA transaction

Extended persistence context can span multiple

JTA transactions

Important use case: “Application transactions”

Preserves state across longer-lived client

interactions (especially from Web tier)

Stateful session beans a natural fit for maintaining

extended persistence context

Optimistic transactions

Avoids need for detach/reattach in co-located

scenarios

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

36

EJB™ QL Enhancements

Bulk update and delete operations

Projection list (SELECT clause)

Group by, Having

Subqueries (correlated and not)

Additional SQL functions

UPPER, LOWER, TRIM, CURRENT_DATE, ...

Dynamic queries

Polymorphic queries

Criteria queries probably in 3.1

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

37

Example: Bulk Update/Delete

DELETE
FROM Customer c
WHERE c.status = 'inactive'

UPDATE Customer c
SET c.status = 'outstanding'
WHERE c.balance < 10000

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

38

Example: Subqueries

SELECT goodCustomer
FROM Customer goodCustomer
WHERE goodCustomer.balance < (
SELECT avg(c.balance) FROM Customer c)

SELECT DISTINCT emp
FROM Employee emp
WHERE EXISTS (
SELECT spouseEmp
FROM Employee spouseEmp
WHERE spouseEmp = emp.spouse)

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

39

Example: Joins

SELECT i.category
FROM Item i JOIN i.bids b
WHERE b.amount > :amount

SELECT i
FROM Item i LEFT JOIN FETCH i.bids
WHERE i.category = 'paintings'

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

40

Example: Projection

SELECT c.id, c.status
FROM Customer c JOIN c.orders o
WHERE o.count > 100

SELECT new CustomerDetails(c.id, c.status,
o.count)
FROM Customer c JOIN c.orders o
WHERE o.count > :ordercount

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

41

Example: Group By/Having

SELECT cat.color, sum(cat.weight), count(cat)
FROM Cat cat
GROUP BY cat.color
HAVING cat.color in ('black', 'tabby')

SELECT new PetData(rat.color, sum(rat.weight),
count(rat))
FROM Rat rat
GROUP BY rat.color
HAVING rat.color in ('agouti', 'hooded')

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

42

Query API

public List findWithName (String name) {
return em.CreateQuery (
“SELECT c FROM Customer c” +
“WHERE c.name LIKE :custName”)
.setParameter(“custName”, name)
.setMaxResults(10)
.listResults();
}

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

43

Named Queries

@NamedQuery(
name=
“findCustomersByName”,
queryString=
“SELECT c FROM Customer c” +
“WHERE c.name LIKE :custName”
)

@Inject public EntityManager em;
...
List customers =
em.createNamedQuery(“findCustomersByName”)
.setParameter(“custName”, “Smith”)
.listResults();

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

44

SQL

Allow direct SQL over actual database schema

Very useful for some applications

Database portability overrated for some applications

Allow SQL query results to be mapped

into entity beans and/or instances of other

Java™ classes

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

45

POJO-centric view of entity beans

No Home interface

No Component interface

No requirement to implement javax.ejb.EntityBean

Enhanced modeling capabilities

Inheritance; polymorphism

Major query language additions

O/R mapping specification

Metadata is major enabling technology

Early draft specification now available

Summary and Status

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

46

Conclusion

Major simplifications to entity bean programming

model

Focus is squarely on providing solid

O/R mapping technology

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

47

For More Information

BOF 1864

Community Discussion of EJB™ 3.0 Architecture

Meet with members of the EJB™ 3.0 Expert Group

background image

| 2004 JavaOne

SM

Conference | Session TS-2836

48

Q&A

background image

java.sun.com/javaone/sf

| 2004 JavaOne

SM

Conference | Session TS-2836

49

Enterprise

JavaBeans

TM

(EJB™)

3.0 Architecture

Simplified Persistence

Linda DeMichiel
EJB™ Specification Lead
Sun Microsystems
java.sun.com/j2ee


Wyszukiwarka

Podobne podstrony:
[JAVA][Enterprise JavaBeans 3 0 EJB 3 0 Simplified API]
Enterprise JavaBeans
Enterprise JavaBeans enjab2 id Nieznany
ENHANCEMENT OF HIV 1 REPLICATION BY OPIATES AND COCAINE THE CYTOKINE CONNECIOION
Enterprise JavaBeans
Enterprise JavaBeans 3 0 Wydanie V
Enterprise JavaBeans 30 Wydanie V
Enterprise JavaBeans
inne enterprise javabeans 3 0 wydanie v bill burke ebook
Enterprise JavaBeans 3 0 Wydanie V enjab5
Enterprise JavaBeans enjab2
Enterprise JavaBeans 3 0 Wydanie V
Enterprise JavaBeans 3 0 Wydanie V enjab5
Enterprise JavaBeans 2
Alternative Energy Technologies, Solar and Wind Power Systems
Enterprise JavaBeans 3 0 Wydanie V enjab5
Haraway (on) Technological sensibilities and the cyberpolitics of gender
The Making of a Counter Culture Reflections on the Technocratic Society and Its Youthful Opposition
Enterprise JavaBeans 3

więcej podobnych podstron