Spring batch spring批处理:使事务只读
在batch:chunk中,一组记录被读取、处理(值操作和修改),然后写入XML。一旦区块完成,它将尝试将修改后的数据提交回数据库。但我不希望这种情况发生。有没有办法将事务设置为只读? 我试图将fetch方法设置为只读,但它不起作用。我了解到,默认情况下,事务在块完成后提交。批处理:批处理中定义的事务属性:tasklet只接受传播、超时和隔离级别值。但不仅仅是。。 请建议Spring batch spring批处理:使事务只读,spring-batch,Spring Batch,在batch:chunk中,一组记录被读取、处理(值操作和修改),然后写入XML。一旦区块完成,它将尝试将修改后的数据提交回数据库。但我不希望这种情况发生。有没有办法将事务设置为只读? 我试图将fetch方法设置为只读,但它不起作用。我了解到,默认情况下,事务在块完成后提交。批处理:批处理中定义的事务属性:tasklet只接受传播、超时和隔离级别值。但不仅仅是。。 请建议 <batch:job id="job1"> <batch:step id="step1">
<batch:job id="job1">
<batch:step id="step1">
<batch:tasklet>
<batch:chunk reader="itemReader" writer="itemWriter" processor="itemProcessor"
commit-interval="500">
</batch:chunk>
</batch:tasklet>
</batch:step>
<batch:listeners>
<batch:listener ref="jobListener" />
</batch:listeners>
</batch:job>
项目阅读器:
public class XReader implements ItemReader {
@Autowired
private XRepository classDao;
private List lst = new ArrayList();
private int index= 0;
public Object read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
if (lst.isEmpty()) {
lst = classDao.findAll();
}
if (index < lst.size()) {
return lst.get(index++);
} else return null;
}
}
公共类XReader实现ItemReader{
@自动连线
私有xdao;
private List lst=new ArrayList();
私有整数指数=0;
public Object read()引发异常、UnexpectedInputException、ParseException、NonTransientResourceException{
if(lst.isEmpty()){
lst=classDao.findAll();
}
如果(索引
您使用的是什么阅读器?您不能将事务本身设置为只读,因为这样会阻止写入作业的元数据。已更新reader类。有什么方法可以做到这一点吗?如果不想更新记录,为什么要使用项目编写器?然后如何从数据库中读取记录?我使用tasklet从数据库中读取记录,然后将它们存储在JobExecutionContext中。在ItemReader中的@BeforeStep中,从执行上下文检索记录。这个很好用。但是我有一个疑问。。当记录的数量更多时会发生什么,比如说数百万条记录。。如何处理?您使用的是什么阅读器?您不能将事务本身设置为只读,因为这样会阻止写入作业的元数据。已更新reader类。有什么方法可以做到这一点吗?如果不想更新记录,为什么要使用项目编写器?然后如何从数据库中读取记录?我使用tasklet从数据库中读取记录,然后将它们存储在JobExecutionContext中。在ItemReader中的@BeforeStep中,从执行上下文检索记录。这个很好用。但是我有一个疑问。。当记录的数量更多时会发生什么,比如说数百万条记录。。如何处理呢?