Introduction to Hibernate
Introduction to Hibernate | Define Object to Relational (O/R) Mapping (ORM) | Define the Hibernate Architecture | Illustrate the benefits of using Hibernate | Understand the goals of Hibernate | Understand key functionalities of Hibernate | Define the different Hibernate types (Entities and values) | Understand different Persistent representations (POJOs, Maps and XML) | Getting started with Hibernate | Understand the nuts and bolts of Hibernate | Understand how to map a class to the database | Understand the configurations involved and their relationships | List different ways of configuring Hibernate | Understand the overall syntax of the Hibernate Configuration file | Understand the overall syntax of a mapping file | Introduce the org.hibernate.SessionFactory | Introduce the org.hibernate.Session | Understand one way of obtain a session using Hibernate contextual sessions | Supply a basic example of using Hibernate
ORM with Hibernate
Basic ORM | Configure persistent classes | Configure persistent state of a class | Understand the requirements for a persistent entity class | Understand object identity in Hibernate | Understand how to correctly implement equals and hashCode in Hibernate | Discuss object identity and a caveat in hashCode and equals implementations | Discuss different ways of generating unique numbers for keys | Understand how to influence mapping to columns | Understand how to map properties of a class to multiple tables | Value Type Collections and Components | Understand how to map composition using Hibernate's components | Understand how to use components as composite identifiers | Understand the different collection types supported | List different element types: simple types, composite types and entities | Understand programming restrictions when using collections | Understand how to map java.util.Set and java.util.List | Understand how to position elements explicitly in the List | Understand how to map java.util.SortedSet | Understand how to correctly use a Comparator | Understand how to map a java.util.Map | Understand how to map the key of the map | Understand Hibernate's bags | Introduce Dynamic components | Lesson: Entity Associations (Relations) | List the different types of associations | Understand the difference between uni and bidirectional associations | Understand how to map unidirectional one to one, many to one and one to many associations | Understand how and when to use join tables | Understand how to map many-to-many associations | Understand how to configure bidirectional associations | Understand how to cascade over associations | Mapping Inheritance | Discuss the three Inheritance ORM strategies | Discuss the Single Table Inheritance Pattern (i.e. table per class hierarchy) | Discuss the Class Table Inheritance Pattern (i.e. table per subclass) | Discuss the Concrete Table Inheritance Pattern (i.e. table per concrete class) | Discuss Hibernate's implicit polymorphism strategy | Understand how to configure these mappings | Understand the concept of a discriminator
Using Persistent Objects
Reading, Updating and Deleting Objects | Understand the three object states: Transient, Persistent and Detached | Understand how to transition from the transient to persistent state (i.e. how to make objects persistent) | Understand how to retrieve hibernated objects using the primary key | Understand how to retrieve hibernated objects using basic HQL | Understand how to update entities which are in the persistent state (attached updates) | Understand how to transition entities from persistent to detached state | Understand the detached state of an entity | Discuss the briefcase model | Understand how to transition from detached (back) to persistent (i.e. how to re-attach detached objects) | Understand the difference between update and merge | Removing entities | Discuss the different cascade options and their impact on entity associations | Transactions | Describe the need for transaction control | Explain isolation levels | Discuss the three different ways of demarcating transactions | Understand the different ways of demarcating transactions in a managed Java EE environment | Understand how to correctly use the contextual session | Use the Hibernate Transaction API to hide transaction implementation | Correctly handle exceptions | Understand Optimistic -vs- Pessimistic locking schemes | Implement Optimistic concurrency using Hibernate's automatic versioning | Implement Pessimistic concurrency using Lock modes | List different optimistic lock modes supported in Hibernate | Understand locking using read for update | Understand the read for update scope on association (and how to cascade the lock)
Querying in Hibernate
Querying for Objects | Introduce two ways of querying (Criteria and HQL) | Understand the basic HQL syntax | Introduce the org.hibernate.Query class | Work with the results of a query | Handle different result set element types (unique, array of entity, scalar) | Use the relationships between entities in your HQL | Use HQL expressions | Use aggregate functions | Use the group by clause | Understand how to enable Pagination | Use parametrized HQL | Understand the concept of Named Queries | Use the org.hibernate.Criteria to query | Understand how to use Query By Example (QBE)
|