| Java Training   Overview 
Spring is a lightweight Java framework for building enterprise applications.  Its Core module allows you to manage the lifecycle of your objects and the dependencies between them via configuration metadata (either XML or annotations) and Dependency Injection / Inversion of Control.  Its advanced capabilities provide support for JDBC and persistence frameworks like JPA2 (DAO and ORM modules), as well as integration with Java EE Web technologies.
Java Training   Skills Gained
 The Java Persistence API (JPA) is is a Java standard object/relational (OR) persistence and query service for Java. JPA supports a POJO (Plain Old Java Object) based model using annotations which lets you develop persistent classes following common Java idioms. It supports entity relationships, inheritance, polymorphism, composition, and much more. .
 
 This course, available for Spring 3 (and Spring 4 coming soon), includes coverage of all the core Spring and JPA capabilities, as well as the integration capabilities provided by Spring. It provides extensive coverage of using Spring and JPA together, as well as all the core concepts of Spring and JPA themselves. All capabilities are practiced via an extensive set of hands-on labs.
 
 The course starts with the basics of Spring and in-depth coverage of using the powerful capabilities of the Core module to reduce coupling and increase the flexibility and ease of maintenance and testing of your applications. It goes on to cover the basics of using Spring to simplify the creation of a persistence layer using its JPA integration capabilities.
 
 The JPA material covers all basic JPA concepts, including mapping persistent classes, and using EntityManager and EntityManagerFactory to access and manipulate persistent entities. Querying with the Java Persistence Query Language (JPQL) is covered in depth, from basic queries to more advanced queries like eager queries using left joins. It also includes coverage of advanced concepts such as collections of value objects, relationships, and inheritance and polymorphic queries.
 
 This course is hands on with labs to reinforce all the important concepts.  It will enable you to build working Spring/JPA applications, and give you an understanding of the important concepts and technology in a very short time.
 
     Hands-OnUnderstand the core principles of Spring,  and of Dependency Injection (DI)/Inversion of ControlUse the Spring Core module and DI to  configure and wire application objects (beans) togetherUnderstand and use the complete  capabilities of the Core module, such as lifecycle events, bean scopes, and the  Spring APIUse Springs ORM/JPA capabilities to integrate Spring and JPA and create Spring/JPA-based DAO typesUnderstand and use Spring's transaction support, including its easy to use tx/aop XML configuration elements and TX-based annotationsIntegrate Spring with Java EE Web applicationsUnderstand the benefits of JPAUnderstand the JPA architectureCreate JPA based applicationsUnderstand and use JPA mapping to map persistent objects to the databaseWork with JPA queries and JPQLUnderstand and work with collections and associations
       
         Value and Entity TypesBidrectional and unidirectional1-1, 1-N, N-NUse JPA's versioning supportMap inheritance hierarchies using JPA 
Minimum 50% hands-on labs
 Supported Platforms
 
Spring 3, Spring 4, Eclipse, IBM RAD, others on request
 Java Training   Course Duration
 
 5 Days
 
 Java Training   Course outline
 
 
 Session 1:   Introduction to Spring 
        Overview of Spring Technology
          
            Challenges for Modern ApplicationsMotivation for Spring, Spring ArchitectureThe Spring FrameworkSpring Introduction
          
            Managing Beans Inversion of Control / IoC,  Dependency Injection / DIConfiguration Metadata Overview, Configuring Beans (XML)The Spring Container
          
            Overview of the Spring ContainerA Simple Spring ExampleApplicationContext OverviewClassPathXmlApplicationContext, FileSystemXmlApplicationContext, AnnotationConfigApplicationContextAPI and UsageDependencies and Dependency Injection (DI)
          
            Examining DependenciesDependency InversionDependency 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, @ServiceConfiguring Beans and Autowiring with AnnotationsEnabling Annotations - context:component-scanPros and ConsJava Based Configuration (@Configuration)
          
            Overview - code-centric Configuration@Configuration and @BeanDependency InjectionResolving Dependencies on Other Beans, Injecting Configuration ClassesPros and ConsIntegrating Configuration Types
          
            Choosing a Configuration StyleIntegrating Configuration StylesImporting: @Import and Scanning with @Configuration styleBean Scope and Lifecycle
          
            Bean Scope Defined - singleton, prototype, and Other Scopes
            Configuring ScopeBean Creation Lifecycle, Lifecycle Callbacks BeanPostProcessor, Event Handling Session 3:  Wiring in Depth 
        Value Injection
          
            Configuring Value Properties, Property ConversionsExternalizing Values in Properties FilesConstructor Injection
          
	       Constructor Injection OverviewConfiguration - @Configuration and XMLp: and c: namespaces for XML configurationQualifiers / Domain Specific Language (DSL)
          
            Limitations of AutowiringQualifiers and DSLCreating and Using an Annotation-Based DSL for Bean ConfigurationBenefits of Qualifiers for Bean ConfigurationProfiles
          
            Profiles OverviewConfiguring Profiles (XML and @Configuration)Activating ProfilesOverview of SpEL Session 4: Introduction to Java Persistence API (JPA2) 
        Overview
          
            Persistence Layers, Object-Relational Mapping (ORM), JDBCJPA Overview Mapping with JPA
          
            Entities and @Entity, ids and @Id, Generated Id ValuesBasic Mapping TypesPersistence Unit and EntityManager
          
            Persisting to the DB, the EntityManager APIPersistence Units, Config, Persistence ContextRetrieving Persistent Entities with find()More About Mappings
          
            Default Mappings, @Basic, @ColumnField vs. Property AccessTemporal (Date/Time) MappingsLogging Options (Provider based) Session 5: Spring/JPA Integration 
        Spring's DataSource SupportManaging the EntityManager (EM)LocalContainerEntityManagerFactoryBean and Container-managed EMsJEE and JNDI Lookup of the EMConfiguration and Vendor AdaptorsCreating a JPA Repository/DAO Bean - @PersistenceUnit, @PersistenceContext Session 6: Updates and Queries 
        Inserting Updating, and Deleting EntitiesQuerying and JPQL
          
            Entity Based Queries, SELECT ,WHEREQuery Interface, Executing Queries, Generic Queries (JPA 2)JPQL Operators, Expressions, and ParametersNamed QueriesAdditional Query Capabilities - Projection and Aggregate Query, Embedded Objects Session 7:  Transaction (TX) Management 
        Transaction Overview and Transactions in JPA
          
            Transaction OverviewEntityTransaction API (including JTA and resource-local EntityManager)Spring Transaction Management
          
            OverviewTransactionManagersDeclarative Transactions and TX Propagation@Transactional and its settings XML Configured Transactions
          
            new <tx:*> elements, Configuring tx:advice, and tx:attributesDefining the TX advisor Session 8: The JPA Persistence Lifecycle 
        The Persistence Lifecycle
          
            JPA Entity States (New, Managed, Detached, Removed), and Entity State DiagramPersistence Context - Lifespan, PropagationSynchronization to the DBVersioning and Optimistic Locking
          
            Overview, Detached InstancesVersioning, @Version, Optimistic LockingLifecycle Callbacks
          
            @PrePersist, @PostPersist, etc.Entity Listeners, @EntityListeners Session 9: Relationships 
        Relationships Overview: Object Relationships, Participants, Roles, Directionality, CardinalityRelationship Mapping
          
            Mapping Overview (1-1, 1-N, N-1, N-N)Unidirectional and Bidirectional@ManyToOne, @OneToMany, Table StructuresRelationship Inverse - Owning SideCollection Types (List, Set, etc)Cascading Over Relationships (including orphanRemoval - JPA 2)@ManyToMany, @OneToOneLazy and Eager LoadingQueries Across Relationships (Inner Joins, Outer Joins, Fetch Joins)Entity Inheritance Mapping
          
            OverviewSingle Table MappingJoined (Table per Subclass) MappingTable per Concrete Class MappingPros and ConsElement Collections (JPA 2)
          
            Overview, Collections of Value Objects, @ElementCollection, @CollectionTableUsing Element CollectionsCollections of Embeddables Session 10:  Introduction to Spring Web Integration 
        Integrating Spring with Java EE Web Apps
          
            ContextLoaderListenerWebApplicationContextUsing Spring beans in Wep app controller logicOpen EntityManager in View
          
            Lazy Loading Issue in Web AppsOpen EntityManager in View PatternUsing Spring's OpenEntityManagerInViewFilter/Interceptor Session 11: JPA Additional Topics 
        Criteria Queriesequals() and hashCode()Design Considerations 
 |