Detailed Course Outline
Introducing the Spring Framework
Spring architecture fundamentals
- Identifying Spring application components
- Defining the n-tier application architecture
Applying Inversion of Control (IoC) and Dependency Injection (DI)
- Delegating object creation to the Spring bean factory
- Controlling bean creation with scopes and methods
Constructing an Effective Data Access Tier with Spring
Simplifying data access with JDBC templates
- Streamlining runaway code with JDBC templates
- Structuring queries and callbacks for maintainability
Abstracting the Data Access Layer
- Supporting the Data Access Object (DAO) pattern
- Achieving implementation independence with platform agnostic exceptions
Managing transactions
- Analysing Java EE transaction support
- Controlling transactions with Spring transaction manager
- Declaring transaction policies with XML and annotations
Building a Web Tier with Spring MVC
Processing web requests
- Analysing Spring MVC architecture
- Mapping requests to controllers with annotations
- Processing commands, form submissions and wizards
Rendering the response
- Spring JSP support
- View technology alternatives with Velocity
Building Ajax controllers
- Establishing the requirements for Ajax controllers
- Implementing REST-style URLs
Persisting Objects with Hibernate
Integrating Hibernate
- Simplifying data access with O/R mapping
- Unravelling the Hibernate architecture
- Deploying and configuring Hibernate
Generating Hibernate applications
- Developing the persistent class
- Storing and retrieving Java objects
Handling Complex Object Relationships
The role of the Hibernate session
- Establishing a thread-safe session object
- Defining object states: transient, persistent, detached
Mapping collections
- Persisting and retrieving collections
- Preserving collection order for data integrity
Strategies for building object associations
- Specifying one-to-many and many-to-many relationships
- Controlling the association life cycle
Effectively mapping inheritance relationships
- Applying class rules for inheritance
- Techniques for class-database mapping
Optimising Data Access
Applying Hibernate Query Language (HQL)
- Improving structure with named queries
- Augmenting HQL with native SQL
- Maximising Hibernate performance