Java Persistence What's New What's (Still) the Same
Total Page:16
File Type:pdf, Size:1020Kb
Java Persistence What's New What's (Still) The Same Craig L. Russell JAX India 2009 Agenda Objects vs. Relational Alternative Approaches Object-Relational Mapping (ORM) Some Cool ORM Features Java Persistence API (JPA) Java Data Objects (JDO) Where Do We Go From Here? Q & A 2 ©Sun Microsystems, Inc. 2 Licensed under the Apache License, Version 2.0 Presenter's "Baggage" JavaTM Data Objects Specification Lead Apache OpenJPA PMC Chair Java EE Container Managed Persistence Architect 3 ©Sun Microsystems, Inc. 3 Licensed under the Apache License, Version 2.0 Objects vs. Relational ● Classes ● Tables ● Fields ● Columns ● Methods ● Stored Procedures ● References ● Foreign Keys ● Multi-valued types ● Single-valued types Department ID NAME SALARY 128 Harry 12900.09 Employee Project 245 Joe 23929.88 4 ©Sun Microsystems, Inc. 4 Licensed under the Apache License, Version 2.0 Alternative Approaches ● Direct API ● Write SQL, Embed in Statement, Get ResultSet ● SQL Helper Classes ● Write SQL, Put Results into User's Classes ● Data Access Object ● Write SQL, Translate Results to Domain Objects ● Object-Relational Mapping ● Write Mapping, Write Queries in Domain Model ● Automatic Change Detection 5 ©Sun Microsystems, Inc. 5 Licensed under the Apache License, Version 2.0 Object-Relational Mapping ● Class <--> Table ● Property <--> Column ● Identity <--> Primary Key ● Bidirectional-Relationship <--> Foreign Key ● Inheritance <--> Foreign Key == Primary Key ● HashMap <--> Join Table with 3 columns ● Embedded <--> Multiple Columns ● Class <--> Multiple Tables with same Primary Key 6 ©Sun Microsystems, Inc. 6 Licensed under the Apache License, Version 2.0 Some Cool ORM Features ● Auto-increment fields/properties ● Especially useful for primary keys ● Orphan deletion ● Implements containment (composite) pattern ● Generate source from database schema ● When you already have a database ● Surrogate (artificial) primary keys ● Enforces "best practice" automatically 7 ©Sun Microsystems, Inc. 7 Licensed under the Apache License, Version 2.0 Some (More) Cool ORM Features ● Detached objects ● Domain objects are DTOs (data transfer objects) ● Life cycle callbacks ● Aspect-oriented without the pain ● Optimistic locking ● Use version columns for consistency ● Uniquing ● Guarantee one object per unique row 8 ©Sun Microsystems, Inc. 8 Licensed under the Apache License, Version 2.0 ORM "Potential Benefits" ƚ ● Productivity ● Writing Mapping is faster than writing SQL ● Scalability ● Fewer team members need to be SQL experts ● Performance ● ORM can write better SQL than you can ● Quality ● Complex SQL needs extensive testing ƚ Legal made me say this 9 ©Sun Microsystems, Inc. 9 Licensed under the Apache License, Version 2.0 Popular ORM Solutions ● Java Persistence API Implementations ● DataNucleus ● OpenJPA (used in BEA, IBM app servers) ● EclipseLink ● Hibernate ● Java Data Objects Implementations ● DataNucleus ● Kodo (used in BEA app servers) 10 ©Sun Microsystems, Inc. 10 Licensed under the Apache License, Version 2.0 JPA 2.0 Features ● QueryBuilder API ● Collections of Basic Types (e.g. String) ƚ ● Nested/Relationships Embedded Objects ƚ ● Delete Orphans ƚ ● Object Cache Interface ƚ ● Expanded Map Mapping (e.g. Join Table) ƚ ● Derived Identity (e.g. Master Detail) ƚ ƚ Included in JDO 2.2 11 ©Sun Microsystems, Inc. 11 Licensed under the Apache License, Version 2.0 JDO 2.1, 2.2, 2.3 Features ● JDOQL Subqueries ● Dynamic Fetch Groups ● Read-Only Transactions ● Transaction Isolation Level ● Persistence Manager Proxy ● getServerTimeZone() ● getServerDate() ● Enhancer Invocation API 12 ©Sun Microsystems, Inc. 12 Licensed under the Apache License, Version 2.0 Persistence Solutions ƚ ● ORM Java 2,620,000 Google hits ● Java JPA 1,490,000 Google hits ● Java iBATIS 1,100,000 Google hits ● Hadoop 1,310,000 Google hits ● EclipseLink 523,000 Google hits ● Java Hibernate 361,000 Google hits ● Java JDO 112,000 Google hits ƚ take with a grain of salt 13 ©Sun Microsystems, Inc. 13 Licensed under the Apache License, Version 2.0 Where do we go (from here)? ● Object to Relational Impedance Mismatch ● Web Framework Object Persistence ● Relational vs. Object Database ● ORM Standards ● Cloud Computing, Massive Scale Data 14 ©Sun Microsystems, Inc. 14 Licensed under the Apache License, Version 2.0 Questions? Answers! Craig L. Russell OpenJPA PMC Chair ASF.