This 3 day class 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.
Course software includes two schemas: a fairly simple human-resources model (6 tables, 253 rows) for early chapters and a more sophisticated pharmacy schema (14 tables, 4255 rows) for the latter half of the course. The pharmacy schema is based on an open-source project and made available to Capstone Courseware by special permission.
The course supports either the Derby or Oracle RDBMS. Derby is bundled with the course software and is pre-configured; a script is included to change over to Oracle configurations for all exercises and schema-creation scripts are available for both.
Goals
- 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.
Outline
- Introduction to JPA
- Object/Relational Mapping
- Mismatches Between Relational and Object Models
- The Java Persistence API
- Hibernate
- History
- Architecture
- Entity Metadata
- The Entity Manager
- 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
- Entity Managers
- Putting Entities to Work
- persistence.xml
- Entity State and Transitions
- Managing Transactions
- Persistence Operations
- Creating Queries
- Named Queries
- Query Parameters
- Native Queries
- 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
- 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
- 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
- Lifecycle and Validation
- Lifecycle Events
- Method Annotations
- Entity Listeners
- JSR-303 Validation
- The Hibernate Validator
- Constraint Annotations
- Validation Modes
- Validation Groups
- 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”
To Hire an AMS Hibernate Subject Matter Expert and Instructor who also teaches this class, call us today at 800-798-3901!