Course Summary
This course will expose students to new ways of approaching systems, levering concepts such as object-relational mapping: made popular by Hibernate, and Dependency Injection: which is gaining major traction as the preferred way to design flexible architectures through lightweight containers such as Spring. Learn how these technologies increase developer productivity and promote well thought-out design by providing boilerplate infrastructure support of a system, allowing developers to concentrate on what's really important: the business functionality of their code. Reinforced with real life applications and examples, as well in-class exercises, this class leaves students ready to reap the benefits the moment they leave the classroom.
The course is taught by experienced Java EE developer and instructor Matt Cherry.
Duration
5 days.
Objectives
Java EE has made tremendous strides in recent years, but through it all few technologies can claim to have been as influential as Hibernate and Spring. Both these frameworks have changed the playing field, making enterprise level applications simpler, faster, and better designed.
The objective of this course is to get you up to speed with Spring and Hibernate web development.
Audience
The course consists of an approximately equal mixture of lecture and hands-on lab time. It assumes that all students have moderate to strong Java skills; it is not a course for newcomers to Java. It does not assume any previous exposure to Spring, Hibernate, or JPA.
Outline
Hibernate
The Need for Hibernate
- N-Tier application design
- Container vs. stand alone applications
- Refresher on traditional JDBC approach
- Hibernate installation and setup
Hibernate At a Quick Glance – A Simple Example
- Hibernate origin
- Hibernate design
- Simple but complete example
Association & Collection Mapping
- Realizing association relationships
- Mapping collections
Components & Inheritance Mapping
- Recognizing and implementing components
- Hibernate inheritance techniques
Object Lifecycle, Persistence and Session Management
- Object States
- CUD (no querying)
- Session Management
Executing Queries
- Binding Parameters
- Running Query
- Iterating through results
- Tuples/Scalar (Returning multiple object types vs. just simple data values)
- Externalizing Queries in mapping file
- Queries in Native SQL
HQL in Detail and Criteria Queries
- The Hibernate Query Language (HQL)
- Criteria Queries
Transaction Management
- Introduction to Transactions
- Optimistic concurrency control (version column)
- Pessimistic locking
- Connection release
Advanced Hibernate Features
- Batch processing
- 2nd Level Cache
- Fetching strategies
EJB 3.0 Compliance & Best Practices
- JPA
- Entity manager
- Annotations
- Best practices
Spring Framework
Introduction to Inversion of Control and Aspect Oriented Programming
- Brief history/origin on Spring
- Design considerations used by Spring authors
- Discuss interface-driven development
- Overview of Spring architecture components
The Spring IoC Container
- Spring configuration
- Defining and instantiating beans
- Dependency Injection
- Bean scope, inheritance and relationships
- Lifecycle call backs
Aspects in Spring
- AOP Concepts
- Advice, Pointcuts and Aspects
- AspectJ Annotations
- XML configuration of Aspects
Data Access Integration with JDBC
- Data sources & connections
- JDBC Templates
- Batch Operations
Data Access Integration with ORM
- Hibernate Template
- JPA Template
- Walk through simple example from Hibernate lectures with Spring additions
Transaction Management
- Attributes of Transaction Management
- Declarative Transactions Management
- Programmatic Transaction Management
- Integration with Application servers
Remoting with Spring
- RMI
- EJBs
- JMS
- Web services
Spring MVC
- Dispatcher Servlet
- Controllers
- Handler Mappings
- Views, Locales, Themes
- Exception Handling
Spring MVC Integration with Other Presentation Technlogies
- JSP & JSTL
- Integration with Struts & Tiles
- Integration with JSF
Other Enterprise Framework Components
- Integration with scheduler components (Java Timer, Quartz)
- Thread Pool Management
- OXM (Object XML Mapping)
- Testing with Spring