WebObjects Enterprise Objects Programming Guide
PDF
Introduction
Enterprise Objects Overview
What Does Enterprise Objects Do?
Why Enterprise Objects?
What Is an Enterprise Object?
Core Layers
Key Concepts of Object-Oriented Programming
Key-Value Coding
Delegation
Notification
Principal Methods of Enterprise Objects
Business Objects
Reference Entity
Designing a Schema
Defining the Model
Which Enterprise Object Class?
Choosing Class Properties
Relationships With Other Enterprise Objects
Referential Integrity
Implementing an Enterprise Object
Generating Source Files
Fields
Change Notification
Faulting
Accessing an Enterprise Objectâs Data
Error Handling for Accessors
Common Programming Errors
Overriding equals or hashcode
Immutable Primary Keys
Primary Keys and Allows Null
Synchronizing Model Changes to Class Files
Instantiating Enterprise Objects
Business Logic
Custom Classes
Providing Initial Values
Adding Validation
Validating Before Certain Operations
Validating Individual Properties
Writing Business Methods
Manipulating Relationships
Building a Reusable Framework
Core Framework Stack
Roles
Important Objects
How It Stacks Up
The Access-Control Divide
Object Store Coordinator
When to Use Multiple Object Store Coordinators
Why So Many Object Stores?
Providing Separate Stacks
Accessing Lower-Level Objects
Fetching Data
Objects Involved in Fetching
Flow of Data During a Fetch
Enterprise Object Initialization
Faulting and Relationship Resolution
Data Integrity Mechanisms
Uniquing
Snapshotting
Uniquing and Faulting
Ensuring Fresh Data
When Does Database Fetching Occur?
Distributed Change Notification?
Fetch Timestamp
Timestamp Lag
Other Mechanisms to Ensure Freshness
Advanced Faulting
Deferred Faulting
Batch Faulting
Advanced Fetching
Prefetching
Entity Caching
Raw Row Fetching
Raw SQL Fetching
Common Delegate Usage
Constructing Fetch Specifications
Qualifiers
Simple String Qualifier
Simple Integer Qualifier
Wildcard Qualifiers
Compound Qualifiers
Filtering Fetch Results in Memory
Sorting Fetch Results in Memory
Accessing Database Keys
Working With the Object Graph
Objects Involved in Managing the Object Graph
Getting Information About Changed Objects
Undoing Changes
Discarding Changes
Discarding Cached Objects
Refreshing Cached Data
Working With Objects in Multiple Editing Contexts
Memory Management
Saving Data
Objects Involved in Saving
Phases of Saving
Flow of Data During a Save
Key Generation
Common Delegate Usage
Generating Custom Primary Keys
Using a Delegate
Using Binary Keys
Using Compound Primary Keys
Update Strategies
Choosing a Strategy
Inside Optimistic Locking
Multiple Coordinators and Optimistic Locking
Using Optimistic Locking
Prevention
Recovery
Recovering and Refaulting
Recovering and Last Write Wins
Connecting to a Database
Objects Involved in a Database Connection
When Database Connections Are Opened
When Database Connections Are Closed
Connection Dictionary
Storing in a Model File
Storing in Code
Connecting to Multiple Data Stores
Database Channels
Providing a Connection Dictionary in Code
Providing Multiple Database Channels
Closing Database Channels
Concurrency
Determining Requirements
Maintaining Thread Integrity
Appendix A: Enterprise Objects in WebObjects
Accessing WebObjects in Enterprise Objects
Enterprise Objects in WebObjects Builder
Appendix B: Principal Methods
Creating and Initializing Objects
Fetching and Accessing Data
Identifying and Tracking Objects
Working With Fetch Results
Manipulating and Changing Objects
Revision History
Glossary