Java Data Objects JDO Overview and Future - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

Java Data Objects JDO Overview and Future

Description:

How many of you would consider themselves 'moderately familiar' with JDO, or ... ObjectWeb Speedo. TJDO. XORM (?) Apache JDO 2.0 RI (?) Orient (ODBMS, OSS is new) ... – PowerPoint PPT presentation

Number of Views:232
Avg rating:3.0/5.0
Slides: 27
Provided by: michaelv8
Category:

less

Transcript and Presenter's Notes

Title: Java Data Objects JDO Overview and Future


1
Java Data Objects (JDO) Overview and Future
  • Michael Vorburger, Verticali
  • Java User Group Switzerland
  • Zurich, 31.03.05

2
Agenda
  • Object Persistence
  • O/R Mapping (ORM)
  • History
  • JDO Introduction
  • JDO API
  • JDOQL
  • JDO 2.0 (JSR 243)
  • JDO Implementations (Vendors OSS)
  • Using JDO in EJB 2.1
  • Using JDO in Web Apps
  • Using JDO and/or JDBC
  • EJB 3.0 (JSR 220)
  • Future

3
About Speaker
  • Personal interest in persistence space
  • Culprit for an in-house ORM layer
  • Somehow picked up JDO in 2001
  • Core Java Data Objects co-author
  • For past ca. 3 years user of JDO

4
About Audience
  • How many of you would consider themselves
    moderately familiar with JDO, or another
    similar persistence framework, anyway?
  • How many of you have read the JDO 2.0 and EJB 3.0
    Persistence Specs?

5
Object Persistence Concepts
  • Graph of data objects (Domain Model)
  • API persist(), Persistence by Reachability
  • Transactions
  • Query!
  • Internal Memory Management, Caching, etc.

6
O/R Mapping (ORM)
  • Impedance Mismatch of OOP RBDMS
  • Classes vs. Tables, Inheritance mapping
    strategies
  • Relationships Single 1-1 or 1-M, Multiple M-N,
    Link with attributes DBA mixed data and
    relationship, Inverses/Bi-directionality, Lists,
    Maps
  • Identity Management, Uniqueness
  • Class Attribute vs. Column Type Mappings
  • More in Core JDO Book Chapter 2, but Solutions
    for
  • mismatches exist see also your ORM Vendor Doc!

7
History
  • Few things fall from the sky object persistence
    in general and JDO in particular build upon a
    long history
  • Have you heard of any of these names before?
  • CORBA POS Persistent Object Service
  • Project Forest of Sun Labs (OPJ, PJama)
  • ODMG API
  • Gemstone, O2,
  • TopLink (15y)
  • (EJB 2.1 Entity Beans)

8
JDO Introduction
  • JDO is an interface-based API for selection and
    transformation of transactional persistent
    storage data into native Java programming
    language objects Transparent Object
    Persistence!
  • Various implements for this API exist Most as
    ORM for your favourite RDB some for standalone
    or built-in OODBMS.
  • JDO 1.0 (JSR 12) in 2003
  • JDO 2.0 (JSR 243) Extension, accepted 1m ago

9
JDO API PMF PM
  • PersistenceManagerFactory pmf
    JDOHelper.getPersistenceManagerFactory(Properties
    p)
  • javax.jdo.PersistenceManager pm
    pmf.getPersistenceManager()
  • pm.makePersistent(customer)
  • customer pm.getObjectById(oid,true)

10
JDO Metadata Enhancement
  • JDO XML metadata describes which classes can be
    persisted (ltclass namegt), with relevant options
    (ltcollection element-typegt, ltextension gt)
  • JDO implementation run-time needs to interact
    with persistence instances for lifecycle
    notification, load, store/flush. Generally, this
    is achieved by running a build-time tool, a JDO
    byte code enhancer. (It adds the
    PersistenceCapable interface from SPI API to
    persistent classes. This is no longer strictly
    for JDO compliance,see BinaryCompatibility.)
  • Subject of hot debates strange, think AOP etc.

11
JDO API Transactions
  • Non-Managed
  • javax.jdo.Transaction jtx pm.currentTransaction(
    )
  • jtx.begin() / Do Stuff / jtx.commit()
  • Managed (usually in J2EE container)
  • JTA API
  • javax.transaction.UserTransaction ut
  • ut lookup somewhere, e.g. JNDIut
    ejbContext.getUserTransaction()
  • ut.begin() / Do Stuff / ut.commit()
  • Declarative EJB container managed transactions
  • Core JDO Book Chapter 11

12
JDO API Query and JDOQL
  • Query q pm.newQuery(Customer.class,
    "customerName.startsWith('Tintin')
    lastOrder.price gt 100")
  • Collection results (Collection)q.execute()Iter
    ator it results.iterator()while
    (it.hasNext()) Customer cust
    (Customer)it.next())
  • Parameters q.declareParameters(String
    variable") and q.execute(variable) etc. etc.
    many many more query facilities!

13
JDO Queries More of v1.0
  • JDOQL Filter can contain almost all Java
    language operators, and some methods such as
    Collection.isEmpty() contains(),
    String.startsWith() endsWith()But not
    arbitrary other domain model methods!
  • Ordering
  • Free Variables
  • Compiled Queries
  • Namespaces (packages)
  • Navigation (dots) in Filters, Ordering, etc.

14
JDO Queries More in v2.0
  • Single-String JDOQL Form
  • String.matches(), toLowerCase(), toUpperCase(),
    indexOf() x2, substring() x2, Map.containsKey()
    containsValue(), Math.abs() sqrt().
  • Paging Query Results with Query.setRange() or
    range start to end and java.util.List results
  • User-Defined Result Class, single results, Unique
  • Projections, Aggregates functions
  • Standardized SQL pass-through

15
JDO 2.0 News
  • Disconnected Object Graphs for multi-tier
  • Standardized RDBMS Mapping Descriptors (just
    the agreed upon XML language many
    implementations already had possibilities)
  • Can get e.g. a java.sql.Connection from
    javax.jdo.PersistenceManager
  • More newNamedQuery, FetchPlan, Sequence, delete
    by query, Multiple User Objects on PM, etc.

16
JDO Implementations DISCLAIMER
  • Open Source
  • JPOX
  • ObjectWeb Speedo
  • TJDO
  • XORM (?)
  • Apache JDO 2.0 RI (?)
  • Orient (ODBMS, OSS is new)
  • Commercial JDO ORM Vendors
  • Solarmetric Kodo
  • Xcalia (formerly Libelis LiDO) .FR
  • Signsoft intellBO .DE
  • Versant Open Access (formerly JDO Genie)
  • Others, e.g. Exadel, ObjectFrontier,
    ObjectMatter, Spadesoft XJDO,
  • Commercial non-ORM
  • Versant (incl. Poet)
  • ObjectDB (simple inexpensive)
  • Non-JDO ORMs
  • JBoss Hibernate
  • Oracle Toplink
  • Castor JDO
  • OJB (?)

17
JDO EJB 2.1
  • EJB 2.1 CMP Entity Beans mixed persistence and
    remoting, with a complicated API and development
    model (container) sorry, but consider that
    dead, essentially.
  • Session and Message-Driven Beans however
    certainly have their place. So JDO inside the
    implementation logic of those makes a lot of
    sense!

18
JDO EJB 2.1
  • When using JDO inside a RPC-like (SOA) EJB
    Session Bean (or RMI, Spring Remoting..
    your-favourite-here)
  • Syntax aspects About how to get, when to
    etc. For full code details see Core JDO book
    chapter 9 and/or Vendor Doc.
  • Architectural aspects How to write your DTOs
    (AKA VO) here or do you write them at all?!

19
JDO EJB DTO (AKA VO)
  • Either, traditionally write dedicated
    Serializable DTO/VO in addition to PC, maybe per
    service/use case. Nothing new see Core J2EE
    Patterns etc.
  • Or, mark domain model PCs as Serializable
    (although JDO will never serialize) and use
    makeTransient (1.0) or detachCopy (2.0)

20
JDO EJB detachCopy
  • New JDO 2.0 state detached-clean/dirty. API
  • Object PersistenceManager.detachCopy(Object pc)
  • Object PersistenceManager.attachCopy(Object
    detached, boolean makeTransactional)
  • Scenario detach/disconnect, close PM, serialize
    across tier, modify disconnected, send back. New
    PM, new Tx, re-attach.
  • Keeps original identity and version!
  • Simplifies makes safer the similar manual
    makeTransient() approach from Core JDO book
    chapter 9.

21
JDO in the Web Tier (directly)
  • If your project does not need EJB-like remoting
    and physical separation of tiers, directly using
    JDO in the Web Tier (Struts, JSF, etc.) can be
    very nice, and lead to a simple and efficient
    development model!
  • Recommended Architecture One shared PMF
    (application context) and one PM and Tx per
    request (context), managed by a Servlet Filter.
    Better Enforce Web MVC with Model 2 View,
    allowing pull view (e.g. JSP) but read-only
    allow write changes in Controller only.

22
JDO and/or JDBC?
  • Using JDO (any ORM) does not necessarily mean no
    JDBC mixing is possible and may make sense. (Tx
    safe) VI LOB
  • Core JDO Book chapter 12 has analysis but
    outdated already because JDO 2.0 addresses some
    cases.
  • Still, of course, for data-centric, database
    processing intensive, performance sensitive e.g.
    batch kind applications, as well as for very
    complex existing fixed RDB schemas, ORM and thus
    JDO may not be the appropriate road to go.

23
EJB 3.0
  • EJB 3.0 EG decided to abandon EJB 2.1 Entity
    Beans, and create new and separate Persistence
    Doc and API
  • This will be an ORM not a transparent Persistence
    API. Some other differences. However, will also
    be usable in J2SE, outside J2EE container.

24
EJB 3.0
  • Also a POJO-style approach. Many real world
    domain models will probably be usable with both
    APIs!
  • Both a similar API, conceptually close for
    practical purposes, e.g. life cycle aligned.
    EntityManager.persist(), EntityManager.createQuer
    y(), javax.persistence.Query.getResultList()
  • Query Languages (JDOQL EJBQL) differ, but maybe
    JDO 2.1 and EJB 3.1 allow cross-spec query
    language? (A la SQL in JDO 2.0)

25
Future of Java Persistence
  • Today, the choice is JDO why wait? A proven JCP
    standard with many implementations.
  • EJB 3 Final Release supposedly summer 2005 (?).
    Requires JDK 5. Slow adoption?
  • Longer Term (2-3 years?) who knows?
  • Note All major JDO implementations very likely
    also EJB 3 "persistence engines".

26
Q A
  • Thanks for listening!
  • To play with running code after
    thishttp//www.jpox.org great tutorials!
  • Questions?
  • Drinks.
Write a Comment
User Comments (0)
About PowerShow.com