Introduction to Java Persistence API (JPA)
Overview
Persistence Layers, Object-Relational Mapping (ORM), JDBC
JPA Overview
Mapping with JPA
Entities and @Entity, ids and @Id,
Generated Id Values
Basic Mapping Types
Persistence Unit and EntityManager
Persisting to the DB, the EntityManager API
Persistence Units, Config, Persistence Context
Retrieving Persistent Entities with find()
More About Mappings
Default Mappings, @Basic, @Column
Field vs. Property Access
Temporal (Date/Time) Mappings
Logging Options (Provider based)
Updates and Queries
Inserting and Updating - Persisting new Entities, Updating an Instance, Removing an Instance
Querying and JPQL
Entity Based Queries, SELECT ,WHERE
Query Interface, Executing Queries, Generic Queries (JPA 2)
JPQL Operators, Expressions, and Parameters
Named Queries
Additional Query Capabilities
Projection query, Ordering, Aggregate Query, Build Update and Delete
Embedded Objects
@Embeddable, @Embedded
Defining and using Embedded Objects
Compound Primary Keys - @EmbeddedID, @IDClass, Defining Compound Keys
The Persistence Lifecycle
Transaction Overview and Transactions in JPA
Transaction Overview
EntityTransaction API (including JTA and resource-local EntityManager)
The Persistence Lifecycle
JPA Entity States (New, Managed, Detached, Removed), and Entity State Diagram
Persistence Context - Lifespan, Propagation
Synchronization to the DB
Versioning and Optimistic Locking
Overview, Detached Instances
Versioning, @Version, Optimistic Locking
Lifecycle Callbacks
@PrePersist, @PostPersist, etc.
Entity Listeners, @EntityListeners
Entity Relationships
Relationships Overview: Object Relationships, Participants, Roles, Directionality, Cardinality
Relationship Mapping
Mapping Overview (1-1, 1-N, N-1, N-N)
Unidirectional and Bidirectional
@ManyToOne, @OneToMany, Table Structures
Relationship Inverse - Owning Side
Collection Types (List, Set, etc)
Cascading Over Relationships (including orphanRemoval - JPA 2)
@ManyToMany, @OneToOne
Lazy and Eager Loading
Queries Across Relationships (Inner Joins, Outer Joins, Fetch Joins)
Entity Inheritance Mapping
Overview
Single Table Mapping
Joined (Table per Subclass) Mapping
Table per Concrete Class Mapping
Pros and Cons
Element Collections (JPA 2)
Overview, Collections of Value Objects, @ElementCollection, @CollectionTable
Using Element Collections
Collections of Embeddables
The Crietria API (JPA 2)
Overview of the Criteria API
Path Expressions, Building Queries (CriteriaBuilder, CriteriaQuery, Subquery, Predicate, Expression, Order, Selection, Join)
Executing Queries and Accessing Results
Additional JPA Capabilities
XML Mapping Files
Bean Validation (JPA 2)
Best Practices
Primary Keys, Named Queries, Lazy/Eager Loading, Transactional Semantics, Encapsulation, Report Queries
Integration
Data Access Objects (DAO) and Java SE Integration (Optional)
DAO Overview
JpaUtil Class for EntityManager management in Java SE
Lifecycle Considerations
Integration with EJB (Optional)
Using JPA with Session Beans
Container Managed (Injected) Entity Manger
JTA Transactions and Lifecycle Considerations
Extended Persistence Contexts
Using JPA with Java Web Apps
Using EntityManager in Web apps - request scoping
Lazy Loading - Open EntityManager in View Pattern
Integration with Spring (Optional)
Injection of EntityManger, EntityManagerFactory
LocalEntityManagerFactoryBean
JPA/Spring Based DAO