Srs.,
Estou com problemas para integrar o hibernate com o spring batch no projeto do Washington Botelho (https://github.com/wbotelhos/spring-batch-flat-file-database), estou querendo colocar a camada de serviço antes do DAO e estou tomando algumas exceptions.
Fico muito grato se alguem me der uma luz 
 .
applicationContext.xml
[code]<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns=“http://www.springframework.org/schema/beans”
xmlns:tx=“http://www.springframework.org/schema/tx”
xmlns:context=“http://www.springframework.org/schema/context”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- Load Properties -->
<context:property-placeholder location="classpath:*.properties" />
<context:annotation-config />
<context:component-scan base-package="br.com.batch" />
<bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
	<property name="jobRepository" ref="jobRepository" />
</bean>
<bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
	<property name="transactionManager" ref="transactionManager" />
</bean>
<!-- Pagamento Service -->
<bean id="PagamentoServiceImpl" class="br.com.batch.service.impl.PagamentoServiceImpl">
	<property name="pagamentoDao" ref="PagamentoDao" />
</bean>
<!-- Pagamento DAO  -->
<bean id="PagamentoDao" class="br.com.batch.dao.impl.PagamentoDaoImpl">
	<property name="sessionFactory" ref="SessionFactory" />
</bean>
<!-- Data Source -->
<bean id="DataSource1" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
	<property name="driverClassName" value="${mysql.driverClassName}" />
	<property name="url" value="${mysql.url}" />
	<property name="username" value="${mysql.username}" />
	<property name="password" value="${mysql.password}" />
</bean>
<!-- Session Factory -->
<bean id="SessionFactory"
	class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
	<property name="dataSource" ref="DataSource1" />
	<property name="packagesToScan">
		<list>
			<value>br.com.batch.entity</value>
		</list>
	</property>
	<property name="hibernateProperties">
		<props>
			<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
			<prop key="hibernate.show_sql">true</prop>
			<prop key="hibernate.format_sql">true</prop>
		</props>
	</property>
</bean>
<!-- Enable the configuration of transactional behavior based on annotations -->
<tx:annotation-driven transaction-manager="txManager" />
<!-- Transaction Manager is defined -->
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
	<property name="sessionFactory" ref="SessionFactory" />
</bean>
</beans>[/code]
csvFileJob.xml
[code]<?xml version=“1.0” encoding=“UTF-8”?>
<beans
xmlns=“http://www.springframework.org/schema/beans”
xmlns:batch=“http://www.springframework.org/schema/batch”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns:aop=“http://www.springframework.org/schema/aop”
xmlns:tx=“http://www.springframework.org/schema/tx”
xmlns:context=“http://www.springframework.org/schema/context”
xmlns:util=“http://www.springframework.org/schema/util”
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
<import resource="applicationContext.xml" />
<batch:job id="read">
	<batch:listeners>
		<batch:listener ref="appJobExecutionListener" />
	</batch:listeners>
	<batch:step id="step1">
		<batch:tasklet>
			<batch:listeners>
				<batch:listener ref="itemFailureLoggerListener" />
			</batch:listeners>
			<batch:chunk reader="itemReader" writer="pagamentoWriter" commit-interval="1000" />
		</batch:tasklet>
	</batch:step>
</batch:job>
<bean id="itemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
	<property name="resource" value="classpath:csvFileJob.csv" />
	<property name="lineMapper">
		<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
			<property name="lineTokenizer">
				<bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
					<property name="names" value="depositante,codigo,tipo,data,valor,comentario" />
					<property name="delimiter" value="," /> <!-- default -->
				</bean>
			</property>
			<property name="fieldSetMapper" ref="pagamentoMapper" />
		</bean>
	</property>
</bean>
</beans>[/code]
public interface PagamentoService {
	public void addPagamento(Pagamento pagamento);
    public void updatePagamento(Pagamento pagamento);
    public void deletePagamento(Pagamento pagamento);
    public Pagamento getPagamentoById(int id);
    public List<Pagamento> getPagamentos();
}
@Transactional
public class PagamentoServiceImpl implements PagamentoService {
	PagamentoDao pagamentoDao;
	@Override
	public void addPagamento(Pagamento pagamento) {
        pagamentoDao.addPagamento(pagamento);
    }
	...
public interface PagamentoDao {
	public void addPagamento(Pagamento pagamento);
    public void updatePagamento(Pagamento pagamento);
    public void deletePagamento(Pagamento pagamento);
    public Pagamento getPagamentoById(int id);
    public List<Pagamento> getPagamentos();
}
[code]@Repository
public class PagamentoDaoImpl extends HibernateFatory implements PagamentoDao {
@Override
public void addPagamento(Pagamento contato) {
    getSessionFactory().getCurrentSession().saveOrUpdate(contato);
}
...[/code]
[code]public class HibernateFatory {
SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
	return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
	this.sessionFactory = sessionFactory;
}
}[/code]
Log…
04.08.2012 13:23:26  INFO (AbstractApplicationContext.java:411) - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@ca470: display name [org.springframework.context.support.ClassPathXmlApplicationContext@ca470]; startup date [Sat Aug 04 13:23:26 BRT 2012]; root of context hierarchy
04.08.2012 13:23:26  INFO (XmlBeanDefinitionReader.java:323) - Loading XML bean definitions from class path resource [csvFileJob.xml]
04.08.2012 13:23:29  INFO (XmlBeanDefinitionReader.java:323) - Loading XML bean definitions from class path resource [applicationContext.xml]
04.08.2012 13:23:31  INFO (DefaultListableBeanFactory.java:467) - Overriding bean definition for bean 'read': replacing [Generic bean: class [org.springframework.batch.core.job.flow.support.SimpleFlow]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] with [Generic bean: class [org.springframework.batch.core.configuration.xml.JobParserJobFactoryBean]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null]
04.08.2012 13:23:31  INFO (AbstractApplicationContext.java:426) - Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@ca470]: org.springframework.beans.factory.support.DefaultListableBeanFactory@15dc37d
04.08.2012 13:23:31  INFO (PropertiesLoaderSupport.java:178) - Loading properties file from file [/media/hd2/workspace-sts/SpringBatchACF/target/classes/log4j.properties]
04.08.2012 13:23:31  INFO (PropertiesLoaderSupport.java:178) - Loading properties file from file [/media/hd2/workspace-sts/SpringBatchACF/target/classes/data-access.properties]
04.08.2012 13:23:31  INFO (DefaultListableBeanFactory.java:414) - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@15dc37d: defining beans [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,pagamentoWriter,pagamentoMapper,itemFailureLoggerListener,appJobExecutionListener,pagamentoDaoImpl,PagamentoServiceImpl,PagamentoDao,DataSource1,SessionFactory,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,txManager,org.springframework.batch.core.scope.internalStepScope,org.springframework.beans.factory.config.CustomEditorConfigurer,org.springframework.batch.core.configuration.xml.CoreNamespacePostProcessor,step1,read,itemReader]; root of factory hierarchy
04.08.2012 13:23:31  INFO (DriverManagerDataSource.java:155) - Loaded JDBC driver: com.mysql.jdbc.Driver
04.08.2012 13:23:31  INFO (DefaultSingletonBeanRegistry.java:421) - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@15dc37d: defining beans [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,pagamentoWriter,pagamentoMapper,itemFailureLoggerListener,appJobExecutionListener,pagamentoDaoImpl,PagamentoServiceImpl,PagamentoDao,DataSource1,SessionFactory,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,txManager,org.springframework.batch.core.scope.internalStepScope,org.springframework.beans.factory.config.CustomEditorConfigurer,org.springframework.batch.core.configuration.xml.CoreNamespacePostProcessor,step1,read,itemReader]; root of factory hierarchy
04.08.2012 13:23:31 ERROR (CommandLineJobRunner.java:297) - Job Terminated in error: Error creating bean with name 'PagamentoServiceImpl' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'PagamentoDao' while setting bean property 'pagamentoDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'PagamentoDao' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'SessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'SessionFactory' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'PagamentoServiceImpl' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'PagamentoDao' while setting bean property 'pagamentoDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'PagamentoDao' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'SessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'SessionFactory' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
	at org.springframework.batch.core.launch.support.CommandLineJobRunner.start(CommandLineJobRunner.java:256)
	at org.springframework.batch.core.launch.support.CommandLineJobRunner.main(CommandLineJobRunner.java:448)
	at br.com.batch.Main.main(Main.java:8)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'PagamentoDao' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'SessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'SessionFactory' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
	... 20 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'SessionFactory' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
	... 33 more
Caused by: java.lang.reflect.MalformedParameterizedTypeException
	at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.validateConstructorArguments(ParameterizedTypeImpl.java:42)
	at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.<init>(ParameterizedTypeImpl.java:35)
	at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.make(ParameterizedTypeImpl.java:77)
	at sun.reflect.generics.factory.CoreReflectionFactory.makeParameterizedType(CoreReflectionFactory.java:86)
	at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:122)
	at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)
	at sun.reflect.generics.repository.ClassRepository.getSuperInterfaces(ClassRepository.java:82)
	at java.lang.Class.getGenericInterfaces(Class.java:794)
	at org.springframework.core.GenericTypeResolver.getTypeVariableMap(GenericTypeResolver.java:151)
	at org.springframework.core.GenericTypeResolver.resolveParameterType(GenericTypeResolver.java:81)
	at org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodParameter(GenericTypeAwarePropertyDescriptor.java:109)
	at org.springframework.beans.GenericTypeAwarePropertyDescriptor.getPropertyType(GenericTypeAwarePropertyDescriptor.java:91)
	at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:138)
	at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:386)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1289)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1250)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
	... 42 more