This course teaches students the most popular object-relational mapping framework for Java environments. Object relational mapping in large enterprise applications is difficult. The task is so difficult that the problem of storing and retrieving objects to a relational database has its own name – impedance mismatch. In this class, students learn object-relational mapping concepts and the various issues and options available in Java to address object persistence. With these fundamentals, the course then explores the basics of Hibernate object persistence and configuration. It also digs into the details of Hibernate mapping, queries, transactions, and concurrency. After taking this class, developers will be able to build faster, more flexible and easier to maintain application persistence layers and overcome impedance mismatch with the Hibernate framework.
Duration : 30 Hrs | 15 Days | 2 - 3 Weeks
Program Contents
Persistence
Object Persistence
Object/Relational Paradigms
Impedance Mismatch
Object Relational Mapping ()ORM)
Persistent Framework
Hibernate
Java ORM/Persistent Frameworks
Hibernate Architecture
Hibernate Architecture and PI
Hibernate Installation/Setup
Configuration
Configuration Properties
Mapping Files
Persistent Classes
Persistent Classes
POJOs
JavaBeans
Basic Mapping
Class to Table Mappings
Property Mapping
Identifiers
Generators
Natural Keys
Identifier Exposure
Quoting SQL Tables and Columns
Working with Persistent Objects
Entity Lifecycle
Transient Stat
Persistent State
Persistent Object Updates and Automatic Dirty Checking
Detached State
Deleted
Object Identifiers Revisited
Merge
Components
Domain Model
Entities and Values
Components
Associations
Many-to-one
Bidirectional Many-to-one
Other Collections
Many-to-one List
Many-to-one Map
Many-to-one Bag
Many-to-one Array
More Associations
One-to-one
Bidirectional One-to-one
Many-to-many
Bidirectional Many-to-many
Many-to-many Identifier Bag
Value Type Collections
Collections of Value Types
Collections of Components
Sorting Collections
Inheritance
Inheritance Mapping Strategies
Table per concrete class
Table per subclass
Table per hierarchy
Inheritance Mapping Pros/Cons
Polymorphism
Table per concrete class with unions
Choosing an Inheritance Strategy
Transitive Persistence
Transitive Persistence
Lazy Loading
Proxies
Eager Loading
What's a Proxy?
Detached Objects and Proxies
Polymorphic Associations Revisited
Custom Mapping
Custom Mapping Types
UserType
Enumerations
HQL
Hibernate Object Fetching Options
Hibernate Query
HQL
HQL Parameters
Named Queries
Native SQL
Criteria
Hibernate Criteria
Restrictions
Query By Example
Scrolling
Pagination
Query Hints
Query Option Pros/Cons
Transactions and Concurrency
The Java Transaction
Hibernate Transaction Configuration
Hibernate Transaction API
Concurrency
Isolation Levels
Optimistic Locking
Versioning
Optimistic Locking without Versioning
Pessimistic Locking
Fetching Strategies
N + 1 Selects
Fetching Strategies
Join Fetching
Subselect Fetching
Batch Fetching
Queries and Fetching Strategies
Cartesian Product Problem
Cache
The Promise of Cache
Hibernate Caching Architecture
First Level Cache
Second Level Cache
Cache Concurrency
Configuring Second Level Cache
Cache Regions
Eviction
Annotations
Metadata
Annotations Pros/Cons
Configuring Hibernate Annotations
EJB3/JPA Annotations
Entity Annotations
Embedded Object (Component) Annotations
Inheritance Annotation
Audience :
Java Servlet and JSP developers who need to use Struts as a framework for MVC Web Application Development
Java programmers with a need to understand the Hibernate framework and API
Developers who want to learn Spring Framework
Pre-requisites :
A solid understanding of Java is required
Java Servlet and JSP programming
Basic understanding of HTML and XML
Basic understanding of relational databases and SQL