section_text

DT offers a core set of courses aimed at covering the Application Lifecycle, from requirements gathering, analysis and design to development, testing, process and project management.

section_grafx
  

Building Applications using Hibernate 3


Course Overview
This comprehensive Hibernate class provides complete coverage of the world of Hibernate. With a strong hands-on character and many (many!) ready to use demos, this course makes you competent to start correctly using Hibernate the minute you leave the class room.
 

What will I learn?
This is an intermediate-level Java programming course, designed for developers who wish to understand Hibernate.

 

Course Overview

This is an overview of the course. For a detailed description with objectives per topic, we refer to the detailed workshop overview, listed further below in this document.
Session: Introduction to Hibernate

* Lesson: Introduction to Hibernate
* Lesson: Getting started with Hibernate

Session: ORM with Hibernate

* Lesson: Basic ORM
* Lesson: Value Type Collections and Components
* Lesson: Entity Associations (Relations)
* Lesson: Mapping Inheritance

Session: Using Persistent Objects

* Lesson: Reading, Updating and Deleting Objects
* Lesson: Transactions

Session: Querying in Hibernate

* Lesson: Querying for Objects

Detailed overview
Introduction to Hibernate
Lesson: 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)

Lesson: 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
Lesson: 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

Lesson: 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

Lesson: 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
Lesson: 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

Lesson: 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
Lesson: 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)

 

Hands-on lab exercises
 1. Map a class (Member) to the database-The objective is to map a class with fields of different types to the database. This will also enable students to understand how to setup the environment.
2. Implement a Composition-The objective of this exercise is to understand how to use Hibernate's components
3. Implement Collections-The objective is to understand how to map different collections.
4. Map different associations-The objective is to map different association types to the database in two real-life use cases.
5. Map specializations-The objective is to understand how to map class inheritance to the database
6. Implement a service-per-request proxy and work with detached objects-The objective is to understand how to implement the service-per-request pattern and how to control the lifecycle of the detached entity.
7. Transactions and Concurrency-See the effect of optimistic and pessimistic concurrency and how to develop these schemas
 

Prerequisites
Attending students should be able to use the syntax of the Java language without difficulty.

Recommended Follow-On Courses
.

Duration
4 days

Next Dates
Please call for dates

Cost
£1,500 plus VAT