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