Hibernate and the Java Persistence API

Hibernate and the Java Persistence API


Course code: 
Time Unit: 

This course offers a comprehensive and detail-oriented treatment of Hibernate® 4.0 and the Java Persistence API (JPA) 2.0 for developers interested in implementing persistence tiers for enterprise applications. We cover JPA basics including simple object/relational concepts and annotations, persistence contexts and entity managers, and configuration via persistence.xml. We get a good grounding in the Java Persistence Query Language (JPQL) and take advantage of a prepared JPQL query console to explore the two schemas on which the course's case studies are based. The course then moves into advanced topics including JPA-2.0 mapping options, the Criteria API, lifecycle hooks, JSR-303 validation, locking, and caching. Students will complete the course with a firm understanding of JPA architecture and plenty of hands-on exercise in entity mapping, persistence operations, and JPQL.

Learning Objectives :

- Understand the value of object/relational mapping and JPA's role as a standard for ORM implementations.
- Develop JPA entities using JPA annotations to align the Java classes, properties, and types to relational tables, columns, and types.
- Create entity managers and instantiate persistence contexts to perform persistence operations.
- Carry out create/retrieve/update/delete (CRUD) operations on JPA entities using entity managers.
- Implement entity relationships of all cardinalities, including unidirectional and bidirectional relationships.
- Implement special ORM cases such as composite primary keys, inheritance relationships, and cascading operations.
- Use JPQL to write object-oriented queries, and process query results.
- Use the Criteria API to define queries programmatically, and take advantage of type safety using the Metamodel API.
- Build reusable façades that encapsulate simpler and more complex persistence operations.
- Implement persistence lifecycle event handlers.
- Define JSR-303 validation constraints on JPA entities and see them enforced by the JPA provider.
- Make well-informed decisions about locking strategies, and understand the role of the JPA cache in enterprise applications.



Chapter 1. Introduction to JPA
- Object/Relational Mapping
- Mismatches Between Relational and Object Models
- The Java Persistence API
- Hibernate
- History
- Architecture
- Entity Metadata
- The Entity Manager

Chapter 2. Object/Relational Mapping
- Annotations
- JavaBean Standards
- Property, Field, and Mixed Access
- Table and Column Mapping
- Primary Keys and Generation
- Type Mappings
- Temporal and Enumerated Types
- Embedded Types
- Entity Relationships
- @ManyToOne Relationships
- @OneToOne Relationships
- @OneToMany Relationships
- @ManyToMany Relationships
- Eager and Lazy Loading

Chapter 3. Entity Managers
- Putting Entities to Work
- persistence.xml
- Entity State and Transitions
- Managing Transactions
- Persistence Operations
- Creating Queries
- Named Queries
- Query Parameters
- Native Queries

Chapter 4. JPQL
- The Java Persistence Query Language
- HQL and JPQL
- Query Structure
- Path Expressions
- Filtering
- Scalar Functions
- Operators and Precedence
- between, like, in
- is null, is empty
- Ordering
- Aliases
- Grouping
- Aggregate Functions
- Joins
- Constructors

Chapter 5. Advanced Mappings
- Inheritance Strategies
- Single-Table Strategy
- Joined-Table Strategy
- Table-Per-Concrete-Class Strategy
- Querying Over Inheritance Relationships
- Type Identification with .class
- Secondary Tables
- Composite Primary Keys
- @IdClass and @EmbeddedId
- Derived Identifiers
- @ElementCollection
- Default Values
- @Version Fields
- Cascading and Orphan Removal
- Detachment and Merging
- Hibernate Extensions
- The @Type Annotation

Chapter 6. The Criteria API
- History of the Criteria API
- Criteria Query Structure
- The MetaModel API and Query Type Safety
- The Hibernate Metamodel Generator
- Tuples
- Joins
- Predicates
- Building Expressions
- Ordering
- Grouping
- Encapsulating Persistence Logic
- Façades
- Range Queries

Chapter 7. Lifecycle and Validation
- Lifecycle Events
- Method Annotations
- Entity Listeners
- JSR-303 Validation
- The Hibernate Validator
- Constraint Annotations
- Validation Modes
- Validation Groups

Chapter 8. Locking and Caching
- Concurrency
- Optimistic Locking
- Optimistic Read Locking
- Optimistic Write Locking
- Pessimistic Locking
- Caching
- Persistence Context as Transactional Cache
- Shared (2nd-level) Cache
- Locking and Caching "Do's and Don'ts"



- A strong Java programming background is essential for this course -- consider course JVN001 - Java Programming
- Knowledge of relational database concepts and SQL is recommended -- consider course OR2301-- Data Modelling.
- Prior experience with JDBC will be a plus but is not required - consider course JVN048 - JDBC Programming



Anyone needing to access relational databases from Java programs.