J2EE : Business Developer with Hibernate

In this course Data access and Business components explained in Hibernate

Subjects is covered in context of advanced Web topics ( Servlet / JSP )

Hibernate topics are :

1. Understanding object/relational persistence. In this module persistent

data management in the context of object-oriented applications is defined.

The relationship of SQL, JDBC and Java, specifically the underlying

technologies and standards that Hibernate is built upon, is discussed. The

software development challenges that embody the “object/relational

paradigm mismatch” are individually identified. Additional generic

problems that are encountered when creating object-oriented software

clients to relational databases are also discussed. This module concludes

with presenting the transparent and automatic object/relational mapping

capabilities provided by JPA and Hibernate as two existing options that

can be used to overcome the object/relational paradigm mismatch

problem.

2. Getting started with Hibernate. This module provides the student with

the information necessary to begin a Hibernate project. The student is

guided through selecting a development process, setting up a project,

authoring the necessary configuration files and java classes and running

and testing the application. Once the basic skills are mastered, the

student is presented with realistic use cases such as writing a hibernate

client to an existing legacy database. The Hibernate reverse engineering

tools are presented to the student in the context of this use case. The

module concludes with an introduction to using Hibernate annotations

and using the Hibernate EntityManager.

3. Domain models and metadata options.

through implementing the domain model. Sound design patterns and

development practices for persistent classes will presented. The student

will learn how to address the leakage of concerns, how to implement

transparent and automated persistence.

This module will conclude with the object/relational mapping

metadata. Metadata will be presented as XML and as annotation-based.

4. Mapping persistent classes. This module focuses on mapping entities

with XML and annotations, fine-grained property and component

mappings and inheritance mapping strategies. The first section defines

the essential distinction between entities and value types and how an

individual should approach the object/relation mapping of a given domain

model. The module continues with the presentation of fundamental

mapping options to show how classes and properties are mapped to

tables and columns. The student will learn how to handle database identity

and primary keys and how to use metadata settings to influence the

loading and storing of objects. Mapping examples are presented in

Hibernate's native XML format.

 Fine-grained domain models are examined and the student is

shown how properties and embedded components are mapped. The

module concludes by providing guidelines for choosing the appropriate

inheritance mapping strategy when mapping object inheritance

hierarchies.

5. Collections and Associations. Most developers new to object/relational

mapping techniques have their first experience working with collections

and entity associations with the mapping of a parent/child relationship.

 In this section the student will learn how to map

"one" and "many"-valued relationships between entity classes. The ability

for other classes to have an association to the same target class (not only

a single entity class) and the fact that each entity target instance has its

own identity and independent state complicates what is initially perceived

as a “simple” relationship mapping. This module guides the student

through these issues (which includes bidirectional associations and

cascading parent to child state)

6. Working with objects. In this module the student will learn greater detail

about the lifecycle and states of objects, the Hibernate persistence

manager API, data filtering and

interception. The module begins by describing how an object becomes

persistent and how it stops being considered persistent or, more

specifically, the method calls and other actions that trigger these

transitions. As the Hibernate persistence manager is responsible for

managing object state the student is exposed to this API first.

 This module concludes with a discussion of data

filtering and interception. Both of these capabilities offer transparent

“hooks” into the loading and storing process inside the Hibernate engine.

The student will learn how to influence or participate in the lifecycle of

Hibernate objects without writing complex application code or

without binding the domain model to the persistence mechanism.

7. Transactions. This module provides a comprehensive treatment of

transactions. The student will understand how to create and control units

of work in an application. How transactions work at the database level will

also be covered. The student will learn how to work with transactions in

an application that is based on native Hibernate.

 The student will understand how to demarcate a

transaction boundary to define a unit of work. Concurrency and how

concurrent data access can be controlled in an application with pessimistic

and optimistic strategies will be the final topic of this section.

8. Efficient storing and loading. This module covers transitive state

changes, batch and bulk processing and applying global fetching

strategies. The student is introduced to techniques for efficient storing

and loading of objects. The student will learn how to optimize and reduce

the amount of code that is necessary to store objects and how to identify

the most efficient data retrieval and processing options. The student will

be shown how transitive persistence can facilitate working with complex

object networks. The student will understand how enabling cascading

options in Hibernate and Java Persistence applications will significantly

reduce the amount of code that is needed to insert, update, or delete,

several objects at a time. The module addresses object retrieval in detail

and discusses how large datasets are best handled with application oriented

batch operations or with bulk operations that execute directly on

the database. The module concludes with a discussion of fetching

strategies and how their use can optimize the loading of object networks

when an application navigates from one object to another object.

9. Querying. Upon completion of this module the student will understand

how to work with the various query options available via the Hiberate.

 The student will learn how to write and execute HQL

queries. The Criteria and Example APIs will also be presented. This

module concludes by showing the student how to embed native SQL and

stored procedures in a query.

10. Application design and architecture. This module covers creating

layered applications with or without the use of managed components and

services. The module concludes recommended testing practices with

applications with persistence. The student will be presented with common

Java architectures to illustrate how Hibernate can be integrated into

various scenarios. In the first part of this module, domain modeling and

application layering is discussed as creating layers may affect

persistence-related code. Persistence in rich clients and desktop

applications is briefly addressed. Many of the patterns and strategies

shown are generic.

 The module concludes with testing layered applications

with or without managed components. Unit-, functional-,and integration

testing are addressed by using the testing framework.