Pro EJB 3 - Java Persistence API
Subtitle: English
Publisher: Apress
Published: May 2006
Place of publication: United States of America
Language: eng
Format: Hardcover
Number of pages: 480
Table of contents: title: Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv; title: About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii; title: About the Technical Reviewers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix; title: Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi; title: Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii; title: ■CHAPTER 1                  Introduction                ................................................1; title: Java Support for Persistence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2; title: JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2; title: Enterprise JavaBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2; title: Java Data Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3; title: Why Another Standard? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4; title: Object-Relational Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5; title: The Impedance Mismatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6; title: The Java Persistence API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12; title: History of the Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12; title: Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13; title: Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15; title: ■CHAPTER 2                  Getting Started                   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17; title: Entity Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17; title: Persistability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17; title: Identity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18; title: Transactionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18; title: Granularity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18; title: Entity Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19; title: Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19; title: XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19; title: Configuration by Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20; title: Creating an Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21; title: Automatic State Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22; title: vii; title: ■C O N T E N T S; title: viii; title: Entity Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23; title: Obtaining an Entity Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24; title: Persisting an Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25; title: Finding an Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26; title: Removing an Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27; title: Updating an Entity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28; title: Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28; title: Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29; title: Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30; title: Packaging It Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33; title: Persistence Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33; title: Persistence Archive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34; title: Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34; title: ■CHAPTER 3       Enterprise Applications                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35; title: Application Component Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35; title: Session Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37; title: Stateless Session Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37; title: Stateful Session Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41; title: Message-Driven Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44; title: Defining a Message-Driven Bean . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44; title: Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45; title: Dependency Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46; title: Dependency Lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47; title: Dependency Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49; title: Declaring Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51; title: Transaction Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54; title: Transaction Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54; title: Enterprise Transactions in Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55; title: Using Java EE Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60; title: Using a Stateless Session Bean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61; title: Using a Stateful Session Bean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61; title: Using a Message-Driven Bean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63; title: Adding the Entity Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64; title: Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65; title: Defining the Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65; title: Defining the User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67; title: Packaging It Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68; title: Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68; title: ■C O N T E N T S ix; title: ■CHAPTER 4 Object-Relational Mapping                         . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71; title: Persistence Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71; title: Accessing Entity State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72; title: Field Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72; title: Property Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73; title: Mapping to a Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74; title: Mapping Simple Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75; title: Column Mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76; title: Lazy Fetching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77; title: Large Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79; title: Enumerated Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79; title: Temporal Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81; title: Transient State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82; title: Mapping the Primary Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83; title: Identifier Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83; title: Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88; title: Relationship Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89; title: Mappings Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92; title: Single-Valued Associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92; title: Collection-Valued Associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99; title: Lazy Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108; title: Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108; title: ■CHAPTER 5 Entity Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111; title: Persistence Contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111; title: Entity Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112; title: Container-Managed Entity Managers . . . . . . . . . . . . . . . . . . . . . . . . 112; title: Application-Managed Entity Managers . . . . . . . . . . . . . . . . . . . . . . 117; title: Transaction Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119; title: JTA Transaction Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119; title: Resource-Local Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128; title: Transaction Rollback and Entity State . . . . . . . . . . . . . . . . . . . . . . . 131; title: Choosing an Entity Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131; title: Entity Manager Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132; title: Persisting an Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132; title: Finding an Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133; title: Removing an Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135; title: Cascading Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136; title: Clearing the Persistence Context . . . . . . . . . . . . . . . . . . . . . . . . . . . 138; title: ■C O N T E N T S; title: x; title: Synchronization with the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139; title: Detachment and Merging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141; title: Detachment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142; title: Merging Detached Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143; title: Working with Detached Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147; title: Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161; title: ■CHAPTER 6       Using Queries         . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163; title: Java Persistence QL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163; title: Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164; title: Filtering Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165; title: Projecting Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165; title: Joins Between Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165; title: Aggregate Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166; title: Query Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166; title: Defining Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167; title: Dynamic Query Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167; title: Named Query Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170; title: Parameter Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171; title: Executing Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173; title: Working with Query Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175; title: Query Paging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178; title: Queries and Uncommitted Changes . . . . . . . . . . . . . . . . . . . . . . . . . 180; title: Bulk Update and Delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183; title: Using Bulk Update and Delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183; title: Bulk Delete and Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186; title: Query Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187; title: Query Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188; title: Named Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188; title: Report Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188; title: Query Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189; title: Stateless Session Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189; title: Bulk Update and Delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189; title: Provider Differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189; title: Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190; title: ■C O N T E N T S xi; title: ■CHAPTER 7 Query Language                . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191; title: Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191; title: Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192; title: Example Data Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192; title: Example Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193; title: Select Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195; title: The SELECT Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197; title: The FROM Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200; title: The WHERE Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206; title: The ORDER BY Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214; title: Aggregate Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214; title: Aggregate Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216; title: The GROUP BY Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216; title: The HAVING Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217; title: Update Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218; title: Delete Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218; title: Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219; title: ■CHAPTER 8 Advanced Object-Relational Mapping                                        . . . . . . . . . . . . . . . . . . . 221; title: Embedded Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221; title: Sharing Embedded Object Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 224; title: Compound Primary Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225; title: Id Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226; title: Embedded Id Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228; title: Advanced Mapping Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229; title: Read-Only Mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229; title: Optionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230; title: Advanced Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231; title: Compound Join Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231; title: Identifiers That Include a Relationship . . . . . . . . . . . . . . . . . . . . . . . 233; title: Mapping Relationship State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235; title: Multiple Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237; title: Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241; title: Class Hierarchies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241; title: Inheritance Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246; title: Mixed Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253; title: Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255; title: ■C O N T E N T S; title: xii; title: ■CHAPTER 9       Advanced Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257; title: SQL Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257; title: Native Queries vs. JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258; title: Defining and Executing SQL Queries . . . . . . . . . . . . . . . . . . . . . . . . 260; title: SQL Result Set Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262; title: Parameter Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268; title: Lifecycle Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268; title: Lifecycle Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269; title: Callback Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270; title: Entity Listeners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271; title: Inheritance and Lifecycle Events . . . . . . . . . . . . . . . . . . . . . . . . . . . 274; title: Concurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279; title: Entity Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279; title: Entity Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279; title: Refreshing Entity State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279; title: Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282; title: Optimistic Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282; title: Versioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284; title: Additional Locking Strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285; title: Recovering from Optimistic Failures . . . . . . . . . . . . . . . . . . . . . . . . . 290; title: Schema Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293; title: Unique Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293; title: Null Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294; title: String-Based Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295; title: Floating Point Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295; title: Defining the Column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296; title: Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297; title: ■CHAPTER 10 XML Mapping Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299; title: The Metadata Puzzle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300; title: The Mapping File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301; title: Disabling Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301; title: Persistence Unit Defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303; title: Mapping File Defaults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306; title: Queries and Generators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308; title: Managed Classes and Mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . 312; title: Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333; title: ■C O N T E N T S xiii; title: ■CHAPTER 11 Packaging and Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335; title: Configuring Persistence Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335; title: Persistence Unit Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336; title: Transaction Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336; title: Persistence Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337; title: Data Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337; title: Mapping Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338; title: Managed Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339; title: Adding Vendor Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341; title: Building and Deploying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342; title: Deployment Classpath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342; title: Packaging Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343; title: Persistence Unit Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347; title: Outside the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348; title: Configuring the Persistence Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348; title: Specifying Properties at Runtime . . . . . . . . . . . . . . . . . . . . . . . . . . . 350; title: System Classpath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351; title: Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351; title: ■CHAPTER 12 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353; title: Testing Enterprise Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353; title: Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354; title: Testing Outside the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355; title: Test Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356; title: Unit Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357; title: Testing Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357; title: Testing Entities in Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359; title: The Entity Manager in Unit Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . 361; title: Integration Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364; title: Using the Entity Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364; title: Components and Persistence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370; title: Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383; title: Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384; title: ■C O N T E N T S; title: xiv; title: ■CHAPTER 13 Migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385; title: Migrating from CMP Entity Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385; title: Scoping the Challenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386; title: Entity Bean Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387; title: Migrating from JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396; title: Migrating from Other ORM Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397; title: Leveraging Design Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397; title: Transfer Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398; title: Session Façade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401; title: Data Access Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403; title: Business Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408; title: Fast Lane Reader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408; title: Active Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409; title: Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409; title: ■APPENDIX              Quick Reference                       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411; title: Metadata Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411; title: Enumerated Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426; title: Mapping File-Level Metadata Reference . . . . . . . . . . . . . . . . . . . . . . . . . 426; title: Persistence-Unit-Level Metadata Reference . . . . . . . . . . . . . . . . . . . . . . 427; title: EntityManager Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428; title: Query Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430; title: EntityManagerFactory Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431; title: EntityTransaction Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431; title: ■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433