Object Persistence - Object/Relational Paradigms, O/R Mismatch, Object Relational Mapping (ORM), Java ORM/Persistent Frameworks, What is Hibernate & Hibernate and JPA
Hibernate Configuration - Hibernate Architecture and API, Hibernate Installation/Setup, Configuration, Configuration Properties, Mapping Files, Installing Hibernate Tools, Creating The Project, Using The Libraries, Creating The Configuration, Creating The Session Factory, Testing Out The Configuration
Persistent Classes - POJOs, JavaBeans, Basic Mapping, Class to Table Mappings, Property Mapping, Identifiers, Generators, Natural Keys, Identifier Exposure & Quoting SQL Tables and Columns
Annotations- Metadata, Annotations Pros/Cons, Configuring Hibernate Annotations, EJB3/JPA Annotations & Hibernate Annotations
Persistence Life Cycle - Transaction Overview and Transactions in Hibernate, Hibernate Transaction API (in Managed and Non-managed Environments), The lifecycle of managed objects, Persistent, transient, and detached objects, The Persistence (Session) Context (Lifespan, Relation to Managed Objects, Propagation), Contextual Sessions, Synchronization to the Database,The Session as cache, Optimistic Locking / Versioning, Detached Objects and Optimistic Locking, Versioning overview and Using Versioning & Locking Objects
Components and Model - Element Types, Mapping Compositions, Value-Type Collections and Components, Mapping Java Collections, Bags and Dynamic Components, Domain Model & Entities and Values
Mapping and Association - Object Relationships overview, Mapping Collection of Value Objects, Entity Relationship - One to one, Entity Relationship - One to many, Entity Relationship –Unidirectional and Bidirectional, Entity Relationship - Many to Many, Map, List, Set and Bag, Relationship- Inverse, Cascading Over Relationships, Query Across Relationships(Lazy and Eager), equals() and hashCode()
Entity Inheritance with Hibernate - Table-per-class mapping Table per Subclass mapping, Table per Concrete Class mapping
Intermediate Concepts - Composite Key Mapping, Using Hibernate Mapping File, Using Component Mapping, Mapping Collection of Value Types, Mapping Enumeration, Mapping Secondary Table
Hibernate Query and Criteria - HQL, Hibernate Object Fetching Options, Hibernate Query, HQL Parameters, Named Queries, Native SQL
Criteria - Restrictions, Query By Example, Query Hints, Query Option Pros/Cons
Fetching Strategies - N+1 Selects, Join Fetching, Sub Select Fetching, Batch Fetching, Queries and Fetching Strategies, Cartesian product Problem, Manual Batching, Native SQL & Using Native SQL
Working with Hibernate objects -The Java Transaction, Hibernate Transaction, Configuration, Hibernate Transaction API, Lazy loading and detached objects, Optimistic and pessimistic locking, Transaction Control and Isolation Levels, Schema generation, Mixing Hibernate and JDBC, Performance tuning, Attach and detached objects, Cascading and Embedding Object, Mixing Hibernate and JDBC
Listeners - Implementing Listeners, Data Filters, Using Filters, Integration Concepts, JPA, Spring
Project
JPA Basics - Elements of JPA, Basic Steps & O/R Success Factors.
JPA API Overview - Persistence, EntityManagerFactory, EntityManager & Query
Setting up the Environment - Libraries, Data Source, JUnit, Ant, IDE's.
Configuration - Using XML & Java.
Create the Entity Classes - Rule for Persistent Entities, Recommendations for Persistent Entities, @Entity Annotation & @Id Annotation.
Relationships, Joins and Collections - Simple Composition and Associations, Entities versus Embedded Objects, @ManyToOne, @OneToOne, @ManyToMany, Mapping Collections, Collection Types, Simple Value Collections, Entity Collections, Bidirectional Associations, Cascading Operations, Sorting Collections, Externalize & Interface and Object Fields.
Identity - Database Versus Java Identity, Identity Scope, Identity Generation, Compound Keys, Synthetic Versus Natural Keys, Nullable ID, User Assigned & Generated.
Using Persistent Objects - Inserting, updating and deleting data, EntityManager Lifecycle, Exception Handling & Traversing Relationships.
Object States - Transient, Persistent & Detached.
EJB Query Language - Logging SQL, From Clause, ORDER BY Aliases, WHERE Clause, Associations in WHERE Clause, Select Clause, Aggregates, GROUP BY/HAVING Joins, Use Fetch to Reduce Database Access, Query Interface, Parameter Queries, Functions, Subqueries, All/Any, IN & Bulk Operations.
Patterns and Best Practices - Scoping JPA Objects, Entity Contexts, ThreadLocal Pattern, Composable Transactions & EntityManager Decorator.
Code Generation - Forward Engineering: Schema Generation, Reverse Engineering: Class Generation & Meet in the middle.
JPA in Web Applications -Open EM in View Pattern, Servlet Filters, Proper Scoping JPA Objects, Lifecycle management of JPA Objects & An Add/Edit JSP Page.
Maintaining Consistent State - Transactions, JTA, Container Managed Transaction, Using Lifecycle Events, Validation, Optimistic Locking, Versioning Objects, Datastore versus JPA Transactions & Declarative Transactions.
Mapping - @Table, @Column, @JoinColumn & @JoinTable.
Inheritance - Single Table, Joined, Table Per Class, Mapped Superclass & Discriminator.
Caching - EM Cache, Secondary (L2) Cache, Distributed Cache & Transactional Cache.
Class Enhancement - Runtime Enhancement, Classloader Enhancement & Build Time Enhancement.
Using Detached Objects - When to use detached objects, Pitfalls, Detach Triggers
Architecture Issues - JPA in a 2 Tier Environment, JPA in layered architectures & JPA in web services
Performance Issues - Lazy Loading versus Eager Loading, Fetch Groups, Caching & Other tips
Misc Issues - Logging & Debugging Tips
Using JPA with Spring - JPA Objects in ApplicationObjects, Managing lifecycle of JPA objects & Transactions
Project
Introduction,
MVC Architecture,
Spring Introduction,
Spring Configuration,
Get Started,
Dependency Injection,
The Spring Container and API,
Spring and Persistence,
Spring AOP,
Transaction Management,
Spring MVC,
Spring Data Validation,
Advanced techniques,
Spring Controllers and Ajax,
Restful Web Services,
Remoting and clustering,
Spring Security,
Hibernate Integration,
JMS,
JMX,
Test-driven Development,
Future Exploration,
Spring Best Practices,
Project