由于我是Spring和Spring Batch的新手,我对使用Hibernate作为提供程序的Spring Batch和JPA提出了一般性问题 .
请,我想知道 when Hibernate会话(由EntityManager包装) is flushed ?读者,处理器和作家之间?或者每个提交间隔?我们可以控制与否?
坦克提前为您的答案 .
请,我想知道什么时候刷新Hibernate会话(由EntityManager包装)?读者,处理器和作家之间?或者每个提交间隔?
在每个提交间隔写入一大块项目后刷新会话 . 有关更多详细信息,请查看:
HibernateItemWriter :https://github.com/spring-projects/spring-batch/blob/master/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/HibernateItemWriter.java#L95
HibernateItemWriter
JpaItemWriter :https://github.com/spring-projects/spring-batch/blob/master/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JpaItemWriter.java#L84
JpaItemWriter
我们可以控制与否?
如果使用 HibernateItemWriter ,则可以设置 clearSession 标志以清除每个块后的会话 .
clearSession
据我所知,当Spring事务被提交时,它将在每个块之后 .
2 回答
在每个提交间隔写入一大块项目后刷新会话 . 有关更多详细信息,请查看:
HibernateItemWriter
:https://github.com/spring-projects/spring-batch/blob/master/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/HibernateItemWriter.java#L95JpaItemWriter
:https://github.com/spring-projects/spring-batch/blob/master/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JpaItemWriter.java#L84如果使用
HibernateItemWriter
,则可以设置clearSession
标志以清除每个块后的会话 .据我所知,当Spring事务被提交时,它将在每个块之后 .