
Red Hat Certified Specialist in Persistence Exam (EX297)
Who should attend
- Experienced Java application developers and architects.
- Business component and database developers.
Prerequisites
- Have taken the Red Hat JBoss Development: Persistence with Hibernate (JB297) course or have extensive work experience with JPA and Hibernate
- Have familiarity working in a Red Hat Enterprise Linux environment
- Review the Red Hat Certificate of Expertise in Persistence exam (EX297) objectives
Recommended Training
Course Objectives
You should be able to perform the following tasks:
Configure JPA/Hibernate
- Configure PersistenceUnit properties, including:
- Location of configuration files
- Java EE-specific configuration details
- Java SE-specific configuration details
- Hibernate-specific configuration details
- Connect to a PersistenceUnit from a Java SE application
- Connect to a PersistenceUnit from a Java EE application
- Override PersistenceUnit default property values
Map a single table or object
- Understand the behavior of the id generators, including how and when the value is generated
- Understand how to map a primary key, including:
- Using generated keys
- Mapping simple business keys
- Mapping compound keys
- Understand object identity and business equivalence
- Configure database-specific information, such as table name, column name, column width, and column attributes (nullable, unique, type, and so on)
- Convert an existing Java object into a persistent object using JPA/Hibernate
- Map basic JPA data types to corresponding database types
- Given an existing database table, create a new persistent Java object to map that table
- Understand how and when to use lazy versus eager loading
- Understand and use optimal mapping strategies for collections and value types
- Handle Java/object model-specific properties and behaviors in a persistent object. This includes:
- Serialization
- Transient properties
- Generated and calculated properties
- Immutable properties
- Value types
- Co-dependent properties (i.e. where a property's valid values depend on the value of another property)
Map object relationships with JPA/Hibernate
- Understand how to map relationships, including but not limited to:
- Value relationships (for example, has-a details object)
- Parent/child relationships
- One-to-one relationships (both unidirectional and bidirectional)
- Many-to-one and one-to-many relationships (both unidirectional and bidirectional)
- Many-to-many relationships (both unidirectional and bidirectional)
- Understand default mapping behaviors, including but not limited to:
- Foreign key names
- Association table names
- Understand the use of foreign keys and join tables when creating relationships
- Understand how to map a compound primary key based on the relationship
- Understand JPA/Hibernate collections (sets, maps lists, and bags) and how they map to object and table relationships
- Understand the performance impacts of the different collections
- Understand how and when to use lazy versus eager loading, including the performance and code impacts of both
- Given a set of existing tables and relationships, create a persistent Java object graph matching the database
- Map an existing object model, including various associations, to a persistence store
- Determine optimal loading strategies for a given business process
Map hierarchical object relationships with JPA/Hibernate
- Understand how to represent different object hierarchies using JPA/Hibernate
- Convert an existing Java object hierarchy to persistent objects using JPA/Hibernate
- Represent an existing set of table relationships as an object hierarchy (for example, savings account, credit card, and loan account)
- Understand polymorphic queries and associations
- Understand the benefits and limitations of the different inheritance strategies
- Analyze and determine optimal database representations for different object hierarchies
Understand transactional behavior (ACID)
- Acquire and use a transaction context under:
- Java EE/CMT
- Java EE/BMT
- Java SE using JPA APIs
- Understand how the persistence context is bound to the transaction in Java EE
- Understand transactional context propagation with EJB3
- Understand the consequences of a transaction rollback at the persistence context level
- Understand transactional concurrency risks
- Evaluate data loss/corruption versus performance trade-offs
Retrieve persistent objects
- Understand JPA/Hiibernate loading strategies:
- Lazy loading
- Subselect loading
- Batch loading
- Understand and use advanced query options:
- HQL/JPA QL
- Criteria APIs
- Native queries (SQL)
- Use the runtime eager fetching feature
- Use named parameters
- Anticipate and avoid LazyInitializationException
- Analyze and improve JPA/Hibernate performance
- Understand and use JPA optimistic locking and Hibernate pessimistic locking extended features
Manipulating persistent objects
- Understand entity states, such as:
- transient
- persistent
- attached
- detached
- removed
- Understand how to change the state of an entity/entity graph using JPA APIs
- Understand the lifecycle of the persistence context and its impact on the entities being managed
- Apply JPA/Hibernate batching features:
- API usage patterns
- DML queries
- Determine and apply optimal implementation and cascade settings to manipulate an object graph
- Evaluate when to use batching
Course Content
The Red Hat Certificate of Expertise in Persistence exam tests whether candidates are ready for the real-world responsibilities of creating and maintaining Java™ applications that use the Java Persistence API (JPA) with JBoss® Hibernate®.
The Red Hat® Certificate of Expertise in Persistence exam credential demonstrates an individual's readiness for the real-world tasks associated with using the Java™ Persistence API (JPA) with JBoss Hibernate. The JPA is a Java programming language framework for managing relational data, and Hibernate is a high-performance object-relational persistence and query service that implements the JPA.