Spring batch spring批处理:使事务只读

Spring batch spring批处理:使事务只读,spring-batch,Spring Batch,在batch:chunk中,一组记录被读取、处理(值操作和修改),然后写入XML。一旦区块完成,它将尝试将修改后的数据提交回数据库。但我不希望这种情况发生。有没有办法将事务设置为只读? 我试图将fetch方法设置为只读,但它不起作用。我了解到,默认情况下,事务在块完成后提交。批处理:批处理中定义的事务属性:tasklet只接受传播、超时和隔离级别值。但不仅仅是。。 请建议 <batch:job id="job1"> <batch:step id="step1">

在batch:chunk中,一组记录被读取、处理(值操作和修改),然后写入XML。一旦区块完成,它将尝试将修改后的数据提交回数据库。但我不希望这种情况发生。有没有办法将事务设置为只读? 我试图将fetch方法设置为只读,但它不起作用。我了解到,默认情况下,事务在块完成后提交。批处理:批处理中定义的事务属性:tasklet只接受传播、超时和隔离级别值。但不仅仅是。。 请建议

<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中,从执行上下文检索记录。这个很好用。但是我有一个疑问。。当记录的数量更多时会发生什么,比如说数百万条记录。。如何处理呢?