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 & Updating Persisting new Entities, Updating an Instance, Removing an Instance
- Querying and JPQL
- Entity Based Queries, SELECT ,WHERE
- Query Interfaces, Executing the 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 & Transactions in JPA
- Transaction Overview
- Entity Transaction API (including JTA and resource-local EntityManager)
- The Persistence Lifecycle
- JPA Entity States (New, Managed, Detached, Removed) & 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
Enitity Relationships
- Relationships Overview: Object Relationships, Participants, Roles, Directionality, Cardinality
- Relationship Mapping
- Mapping Overview (1-1, 1-N, N-1, N-N)
- Unidirectional & Bidirectional
- ManyToOne, @OneToMany, Table Structures
- Relationship Inverse – Owning Side
- Collection Types (List, Set, etc)
- Cascading Over Relationships (including orphanRemoval – JPA 2)
- ManyToMany, @OneToOne
- Lazy & 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 & Cons
Element Collections (JPA 2)
- Overview, Collections of Value Objects, @ElementCollection, @CollectionTable
- Using Element Collections
- Collections of Embeddables
Criteria API (JPA 2)
- Overview of the Criteria API
- Path Expressions, Building Queries (CriteriaBuilder, CriteriaQuery, Subquery, Predicate, Expression, Order, Selection, Join)
- Executing Queries & 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) & Java SE Integration
- DAO Overview
- JpaUtil Class for EntityManager management in Java SE
- Lifecycle Considerations
- Integration with EJB
- Using JPA with Session Beans
- Container Managed Entity Manger
- JTA Transactions & 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
- Injection of EntityManger, EntityManagerFactory
- LocalEntityManagerFactoryBean
- JPA/Spring Based DAO