如何在Spring Batch 2和Hibernate 4中使用HibernateItemWriter?

时间:2012-11-26 08:31:31

标签: spring hibernate spring-batch

使用hibernate 3时,以下代码有效:

<bean id="ivsHibernateWriter"
    class="org.springframework.batch.item.database.HibernateItemWriter">
    <property name="hibernateTemplate" ref="hibernateTemplate"/>
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<bean class="org.springframework.orm.hibernate3.HibernateTemplate" id="hibernateTemplate" >
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

升级到hibernate 4之后,我的测试失败了:

org.springframework.orm.hibernate4.SessionHolder cannot be cast to org.springframework.orm.hibernate3.SessionHolder

我想过将hibernateTemplate bean更改为与hibernate 4内联,就像这样:

 <bean class="org.springframework.orm.hibernate4.HibernateTemplate" id="hibernateTemplate" >
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

但是,这个类不存在。

我们应该如何使用Hibernate4和spring Batch?

2 个答案:

答案 0 :(得分:0)

现在这是不可能的,因为Spring Batch不支持hibernate4。 您可能会看到有关此https://jira.springsource.org/browse/BATCH-1904

的Jira问题

我建议您使用JdbcItemWriters,以防您没有严格的业务要求; imho,hibernate和jpa在春季批次中得不到很好的支持(我理解为什么)。

答案 1 :(得分:0)

我认为Spring Batch对Hibernate 4的支持已经存在。无需在hibernateTemplate内注入HibernateItemWriter。只有sessionFactory注射就足够了。有关详细信息,请查看this link