Foreword
Optional Features
Identity Options Optional Collections Transaction-Related Optional Features
3.JDO Architectures
Architecture Within Application JVM
Single PersistenceManager
Multiple PersistenceManagers Accessing the Same Datastore
Multiple PersistenceManagers Accessing Different Datastores
Shared Implementation Cache Datastore Access
Direct Access of Filesystem or Local Datastore
Remote Access of a JDO Server
Remote Access of a SQL Datastore System Architectures with a JDO Application
JDO Rich Client with Local Datastore
JDO Applications in a Web Server
JDO Applications as Web Services
Rich Client Connecting to Application Server with EJB Components
Web Server with EJB Server
EJB Session Beans Using Session Bean Facades
JDO Providing Container-Managed Persistence
4.Defining Persistent Classes
Kinds of Classes and Instances
Kinds of Classes
Kinds of Instances Java Classes and Metadata
JDO Metadata
Inheritance
The Media Mania Object Model Fields
Supported Types
Persistence of Fields
Complete Metadata for the Media Mania Model
5.Datastore Mappings
Mapping Approaches Relational Modeling Constructs
SQL 99
Modeling Constructs in Java and Relational Models Mapping Classes to Tables Mapping a Single-Valued Field to a Column
Name-Mapping
Type-Mapping
Indexes Identity Inheritance References Collections and Relationships
Using a Foreign Key
Using a Join Table
One-to-One Relationships
Representing Lists and Maps
6.Class Enhancement
Enhancement Approaches
Reference Enhancer
Vendor-Specific Enhancement Binary Compatibility Enhancement Effects on Your Code Changes Made by the Enhancer
Metadata
Instance-Level Data
Field Mediation
7.Establishing a JDO Runtime Environment
Configuring a PersistenceManagerFactory Connection Properties Optional Feature Properties Flags
Flags Settings in Multiple Interfaces Determining the Optional Features and Default Flag Settings
Vendor-Specific Properties
Nonconfigurable Properties Acquiring a PersistenceManager
User Object
Closing a PersistenceManager
Closing a PersistenceManagerFactory Transactions
Properties of Transactions
Transactions and Locking in the Datastore
Types of Transactions in JDO
Acquiring a Transaction
Setting the Transaction Type
Transaction Demarcation
Restoring Values on Rollback
Determining Whether a Transaction Is Active Multiple PersistenceManagers Multithreading
8.Instance Management
Persistence of Instances
Explicit Persistence
Persistence-by-Reachability Extent Access
Accessing an Extent
Extent Iteration
Ignoring the Cache Accessing and Updating Instances
Explicit Marking of Modified Instances Deleting Instances
Delete Propagation
9.The JDO Query Language
Query Components Creating and Initializing a Query Changes in the Cache Query Namespaces
Type Names
Field, Parameter, and Variable Names
Keywords
Literals Query Execution
Parameter Declarations
Executing a Query
Compiling a Query The Query Filter
General Characteristics of Expressions
Query Operators
References
Collections
Ordering Query Results Closing a Query
10. Identity
Overview
JDO Identity Types
Metadata
Identity Class Datastore Identity Application Identity
Primary-Key Fields
Persistent Class equalsQ and hashCodeQ Methods
The Application-Identity Class
A Single-Field Primary Key
A Compound Primary Key
A Compound Primary Key That Contains a Foreign Key
Application Identity in an Inheritance Hierarchy Nondurable Identity Identity Methods
Get the Identity Class
Get the Identity of an Instance
Getting an Instance via Its Identity
Changing the Application Identity of an Instance
Get the Current Application Identity of an Instance
The String Representation of Identity
r
Advanced Topics
Choosing an Identity Type Using Identity Versus a Query Identity Across PersistenceManagers
11.Lifecycle States and Transitions
Lifecycle States
Transient
Persistent-New
Hollow
Persistent-Clean
Persistent-Dirty
Persistent-Deleted
Persistent-New-Deleted State Interrogation State Transitions
State Transitions During a Datastore Transaction
State Transitions When a Transaction Completes
States Between Transactions
12.Field Management
Transactional Fields null Values Retrieval of Fields
Default Fetch Group
Retrieving All Fields
The Management of Fields Serialization
Managing Fields During Lifecycle Events First- and Second-Class Objects
Specifying a Second-Class Object
Embedding Collection Elements
Persistent Classes as Second-Class Objects
Sharing of Instances
L
13.Cache Management
Explicit Management of Instances in the Cache
Refreshing Instances
Evicting Instances Cloning Transient-Transactional Instances
Transient-Transactional Lifecycle States
State Interrogation
State Transitions Making a Persistent Instance Transient
14.Nontransactional Access
Nontransactional Features Reading Outside a Transaction Persistent-Nontransactional State Retaining Values at Transaction Commit Restoring Values at Transaction Rollback
Before Image
Restoring Persistent Instances
Restoring Persistent-New Instances Modifying Persistent Instances Outside a Transaction
Hot Cache Example
15.Optimistic Transactions
Verification at Commit
Recovery from a Failed Transaction Setting Optimistic Transaction Behavior Optimistic Example
Optimistic Transaction State Transitions
Deleting Instances
Making Instances Transactional
Modifying Instances
Commit
Rollback
16.The Web-Server Environment
Web Servers
Accessing the PersistenceManagerFactory
Servicing Requests
PersistenceManager per Request
PersistenceManager per Application
PersistenceManager per Transactional Request
PersistenceManager per Session
Transactions
JavaServer Pages Struts with JDO
17.J2EE Application Servers
Enterprise JavaBeans Architecture
Stateless Session Beans
Configuring the PersistenceManagerFactory
Stateless Session Beans with Container-Managed Transactions
Stateful Session Beans with Container-Managed Transactions
Bean-Managed Transactions
j avax. transaction. UserTransaction
javax.jdo. Transaction
Stateless Session Beans with Bean-Managed Transactions
Stateful Session Beans with Bean-Managed Transactions
Message-Driven Beans
Persistent Entities and JDO
Local Persistent Storage Remote Persistent Storage
A.Lifecycle States and Transitions
B.JDO Metadata DTD
C.JDO Interfaces and Exception Classes
D.JDO Query Language BNF
E.Source Code for Examples
Index