- Understand the core principles of Spring, and of Dependency Injection (DI)/Inversion of Control
- Use the Spring Core module and DI to configure and wire application objects (beans) together
- Know the different types of metadata (XML, @Component, and @Configuration), and how and when to use them
- Understand and use the complete capabilities of the Core module, such as lifecycle events, bean scopes, and the Spring API
- Work with the ORM (Object-Relational Mapping) module to integrate Spring with technologies such as Hibernate or JPA.
- Understand and use Spring's transaction support, including the easy-to-use Java annotation support, as well as the tx/aop XML configuration elements
- Integrate Spring with Java EE Web applications
- Understand the benefits of Hibernate
- Understand the Hibernate architecture
- Create Hibernate based applications
- Understand and use Hibernate mapping to map persistent objects to the database
- Understand and work with collections & associations
- Value and Entity Types
- Bidrectional and unidirectional
- 1-1, 1-N, N-N
- Use Hibernate's versioning support
- Map inheritance hierarchies using Hibernate
- Work with Hibernate queries, HQL, and Criteria
- Understand Hibernate transaction support
- Understand the relationship between Hibernate and the Java Persistence API (JPA), and use JPA annotations for OR mapping
Hands-On
Minimum 50% hands-on labs
Supported Platforms
Spring 3 / 4, Eclipse / MyEclipse, IBM RAD, NetBeans
Java Training Course Duration
5 Days
Java Training Course outline
Session 1: Introduction to Spring
- Overview of Spring Technology
- Challenges for Modern Applications
- Motivation for Spring, Spring Architecture
- The Spring Framework
- Spring Introduction
- Managing Beans
- Inversion of Control / IoC, Dependency Injection / DI
- Configuration Metadata Overview, Configuring Beans (XML)
- The Spring Container
- Overview of the Spring Container
- A Simple Spring Example
- ApplicationContext Overview
- ClassPathXmlApplicationContext, FileSystemXmlApplicationContext, AnnotationConfigApplicationContext
- API and Usage
- Dependencies and Dependency Injection (DI)
- Examining Dependencies
- Dependency Inversion
- Dependency Injection (DI) in Spring - Basic Configuration and Usage
Session 2: Configuration in Depth
- Annotation Driven Configuration
- JSR 330 (@Named) and Spring (@Component) annotation styles
- @Named/@Component, @Inject/@Autowired, @Repository, @Service
- Configuring Beans and Autowiring with Annotations
- Enabling Annotations - context:component-scan
- Pros and Cons
- Java Based Configuration (@Configuration)
- Overview - code-centric Configuration
- @Configuration and @Bean
- Dependency Injection
- Resolving Dependencies on Other Beans, Injecting Configuration Classes
- Pros and Cons
- Integrating Configuration Types
- Choosing a Configuration Style
- Integrating Configuration Styles
- Importing: @Import and
- Scanning with @Configuration style
- Bean Scope and Lifecycle
- Bean Scope Defined - singleton, prototype, and Other Scopes
- Configuring Scope
- Bean Creation Lifecycle, Lifecycle Callbacks
- BeanPostProcessor, Event Handling
Session 3: Wiring in Depth
- Value Injection
- Configuring Value Properties, Property Conversions
- Externalizing Values in Properties Files
- Constructor Injection
- Constructor Injection Overview
- Configuration - @Configuration and XML
- p: and c: namespaces for XML configuration
- Qualifiers / Domain Specific Language (DSL)
- Limitations of Autowiring
- Qualifiers and DSL
- Creating and Using an Annotation-Based DSL for Bean Configuration
- Benefits of Qualifiers for Bean Configuration
- Profiles
- Profiles Overview
- Configuring Profiles (XML and @Configuration)
- Activating Profiles
- Overview of SpEL
Session 4: Introduction to Hibernate
- Issues with Persistence layers and Object-Relational Mapping (ORM)
- Hibernate Overview and Benefits
- Hibernate architecture overview
- Configuring Hibernate
- hibernate.cfg.xml file, Connection properties, Database dialect
- SessionFactory, Configuration, and Session
- Mapping a Class
- Persistent Entity Class, Hibernate Mapping File, Mapping the Entity Class
- Primary keys: Id property, Generated Id
- Hibernate Type System
- Working with sessions and Persistent Objects
- Logging: hibernate.show_sql, log4j Overview and configuration for Hibernate
Session 5: Spring/Hibernate Integration
Overview of Spring database support
Configuring a DataSource
Using Contextual Sessions
- Spring/Hibernate configuration with LocalSessionFactoryBean and SessionFactory configuration
- Creating Spring/Hibernate DAO classes using Contextual Sessions
- Overview of Template Approach
Session 6: Updates and Queries
- Inserting, Updating, and Deleting Entities
- HQL - Hibernate Query Language Overview
- The Query Interface
- Creating and working with queries
- Named Queries, Projection Queries, Aggregate Queries
Session 7: Transaction (TX) Management
- Hibernate Transaction Management
- Transaction Overview and Transactions in Hibernate
- Hibernate Transaction API (in Managed and Non-managed Environments)
- Intro to Spring Transaction Management
- Spring Transaction Managers
- Spring Declarative TX Management
- Spring TX Scope and Propagation
- Spring TX Attributes (REQUIRED, SUPPORTS, etc)
- XML Configuration of Spring Transactions
- Specifying Advice, TX Attributes, and Methods
- Linking Advice with Pointcuts
- Benefits of XML Configuration of TX Behavior
Session 9: The Hibernate Persistence Lifecycle
- 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
Session 10: Relationships
- Object Relationship Overview
- Mapping Collections of Value Objects
- Entity Relationships: 1-N, N-1, N-N, 1-1
- Mapping Entity Relationships
- Uni and Bi-directional Relationships
- The Relationship "inverse"
- Cascading Over Relationships
- Queries Across Relationships (Lazy and Eager)
- Inheritance Mapping
- Entity Inheritance with Hibernate
- Table-per-class mapping
- Table per Subclass mapping
- Table per Concrete Class mapping
Session 11: Introduction to Spring Web Integration
- Integrating Spring with Java EE Web Apps
- ContextLoaderListener
- WebApplicationContext
- Using Spring beans in Wep app controller logic
Session 12: Hibernate Additional Topics
- Components and Multi-Table Mapping
- equals() and hashCode()
- Caching and Efficiency
- Design Considerations
Session 13: Hibernate and JPA (Java Persistence API)
- Overview of the Java Persistence API (JPA) / EJB 3
- Relationship between JPA and Hibernate
- Mapping Entities with JPA Annotations
- The EntityManager, Persistence Context and Persistence Unit
- Working with Transactions - EntityTransaction, Managed, and Unmanaged Environments
- Inserts and Updates
- JPQL - Java Persistence Query Language
- Versioning
- Relationships