Spring-Hibernate

Het Spring framework is een zeer populair framework dat het bouwen van enterprise java applicaties een stuk simpeler maakt. Het Spring framework is ontstaan door het feit dat J2EE ontwikkeling nogal complex is. Met Spring is het mogelijk om op een object georiënteerde manier enterprise applicaties te schrijven die flexibel, beter leesbaar en beter te testen zijn.

Hibernate is het meest gebruikte object/relational mapper framework voor enterprise Java applicaties. De reden voor deze populariteit is dat Hibernate vele voordelen ten opzichte van JDBC biedt, zoals:

- Minder regels code voor persistentie.
- Hogere productiviteit.
- Database veranderingen hebben minder impact op de applicatie code.
- Bevordert het implementeren van een goed OO domein model.
- Geeft in veel gevallen een betere performance.

In deze Spring-Hibernate cursus leert u beide frameworks samen te gebruiken. Spring biedt extra ondersteuning voor Hibernate DAO objecten en Spring kan de Hibernate transacties managen. De combinatie Spring-Hibernate maakt het mogelijk om op simpele wijze flexibele en transactionele enterprise Java applicaties te ontwikkelen.



Duur
5 dagen

Onderwerpen
De cursus Spring-Hibernate behandelt de volgende onderwerpen:
• Spring introductie
• Spring basics
• Dependency Injection
• AOP
• Architectuur van een Spring applicatie
• Spring JDBC
• Spring RMI
• Spring JMS
• Spring Web Services
• Spring job scheduling
• Spring test framework
• Hibernate introductie
• Object mapping
• Object persistency
• Association mapping
• Collection mapping
• Inheritance mapping
• Complexe mapping
• HQL
• Criteria
• Native queries
• Constraints en validatie
• Data access optimalizatie
• Transactie en session management
• Spring support voor Hibernate
• Spring transacties

Voorkennis
• Basiskennis van de programmeertaal Java


Gedetailleerde onderwerpenlijst
Hieronder vind u een gedetailleerd overzicht met onderwerpen die in de cursus Spring-Hibernate behandeld zullen worden:

Spring introductie
• Wat is Spring?
• Waarom hebben we Spring nodig?
• Geschiedenis en roadmap van Spring?
• Dependency Injection (DI)
• Aspect Oriented Programming (AOP)
• Enterprise Service Templates
• De Spring portfolio
• Gebruik van het Spring framework
• Voordelen en nadelen van Spring

Spring basics
• Een basis Spring applicatie
• De ApplicationContext
• Singletons en prototypes
• Lazy en eager instantiation
• Lifecycle methoden

Dependency Injection
• Wat is Dependency Injection en wat zijn de voordelen?
• Setter injection
• Constructor injection
• Autowiring
• Injection van primitive values
• List injection
• @Required
• DI met inheritance
• Classpath scanning
• Java configuration
• Vergelijking van de 3 manieren om Spring te configureren
• Spring Expression Language (SPEL)

Aspect Oriented Programming (AOP)
• Crosscutting concerns
• Introductie van AOP
• Advice typen
• AOP configuratie met annotaties
• Pointcut execution language
• Volgorde van executie
• Proxy based weaving en load time weaving
• Nadelen van een proxy
• AOP configuratie met XML
• Voordelen en nadelen van AOP
• Vergelijking tussen XML en annotations

Architectuur van een Spring applicatie
• Hoe ziet de architectuur van een typische Spring applicatie eruit?
• Service objecten
• AOP objecten
• Gebruik van meerdere XML files
• Gebruik van meerdere configuratie klassen by Java configuratie

Spring JDBC
• Typische JDBC code
• Eigenschappen en nadelen van JDBC
• JdbcTemplate en NamedParameterJdbcTemplate
• RowMapper
• Exception handling
• Exception translation

Spring RMI
• Basic RMI
• Spring RMI
• RMI en concurrency
• Tread safety
• RMI en pooling

Spring JMS
• Basic JMS
• Spring JmsTemplate
• Spring JMS synchronous receiver
• Spring JMS asynchronous receiver
• JMS en concurrency
• JMS en pooling

Spring webservices
• Introductie in webservices
• Verschillende typen webservices (SOAP, REST en geserialiseerde objecten over HTTP)
• Spring integratie met AXIS2
• Spring integratie met CXF
• Spring-WS
• Spring REST webservices
• HttpInvoker

Job scheduling met Spring
• JDK Timer scheduling
• Spring support voor JDK Timer scheduling
• Quartz scheduling
• Cron based scheduling
• Spring support voor Quartz scheduling

Spring testing framework
• Unit testen
• Integratie testen
• Testen van de Spring configuratie
• Testen van DAO's configureerd met Spring

Hibernate introductie
• Object relational mismatch
• Data access opties in Java
• Object Relational mapper
• JPA
• Veschillende manieren om Hibernate te gebruiken
• Mapping in XML
• Mapping met Annotaties
• Hibernate configuratie file
• Hello World Hibernate voorbeeld

Object mapping
• Mapping van entity classes naar tabbelen
• Mapping van properties naar colommen
• Mapping Identity en Identity generatie
• Mapping Data types
• Hibernate Property / Field Access

Object persistency
• Entity lifecycle
• Persistence context
• Het Session object
• Save, update en delete objecten
• Caching en flushing

Associatie mapping
• One-to-one mapping uni-directioneel met join column
• One-to-one mapping uni-directioneel met shared keys
• One-to-one mapping bi- directioneel
• Many-to-one mapping uni- directioneel
• Optionele associaties
• One-to-many mapping uni- directioneel
• Many-to-one/one-to-many bi- directioneel
• Many-to-many mapping
• Cascading

Collectie mapping
• Mapping van een Bag
• Mapping van een Set
• Mapping van een List
• Mapping van een Map
• Order by

Inheritance mapping
• Single table per hierarchy
• Joined tables
• Table per concrete class

Complexe mapping
• Secondary tables
• Embedded classes
• Composite keys
• Immutable entities

HQL
• Het Query object
• Named queries
• De FROM clause
• De WHERE clause
• Joins
• De SELECT clause
• Bulk updates en deletes

Criteria
• Query by criteria
• Restrictions
• Association
• Projection
• Detached queries
• Query By Example

Native queries
• Het SQLQuery object
• Unmapped beans
• Named queries

Constraints and validation
• Hibernate validator
• Constraints
• Automatic validation
• Programmatic validation
• Recursive validation

Data access optimizatie
• Lazy en eager fetching
• Extra lazy fetching
• Lazy loading van properties
• N+1 probleem
• Batch fetching
• Subselect fetching
• Join fetching
• 2nd level caching

Transacties en session management
• Gebruik van DAO’s en session management
• Hibernate transacties
• Tread local session pattern
• Open session in view pattern

Spring support voor Hibernate
• DAO’s met Hibernate
• DAO’s met Spring en Hibernate
• Spring transactie management

Spring support voor Hibernate
• Typische Hibernate code
• Eigenschappen en nadelen van Hibernate
• Hibernate template
• Injectie van de Hibernate Session in de DAO
• Spring exception handling voor DAO objecten

Spring transacties
• ACID eigenschappen
• Locale of globale transacties
• 2 phase commit
• Transactie propagatie
• Niveau van isolatie
• JDBC transacties
• Hibernate transacties
• Transacties met Spring
• @Transactional
• Rollback met checked excepties