Java 将HibernatePagingItemReader用作自定义读取器时遇到问题
每次都会检索到相同的记录,但我希望从阅读器中读取下一项Java 将HibernatePagingItemReader用作自定义读取器时遇到问题,java,spring,hibernate,spring-batch,Java,Spring,Hibernate,Spring Batch,每次都会检索到相同的记录,但我希望从阅读器中读取下一项 @Override public MyObject read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException { HibernatePagingItemReader<MyObject> reader = new HibernatePagingItemReader<
@Override
public MyObject read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
HibernatePagingItemReader<MyObject> reader = new HibernatePagingItemReader<>();
reader.setSessionFactory(taskOracleSessionFactory);
reader.setQueryString("select t from MyObject t ");
reader.setPageSize(1);
reader.setFetchSize(10);
return reader.read();
}
@覆盖
public MyObject read()引发异常、UnexpectedInputException、ParseException、NontTransientResourceException{
HibernatePagingItemReader=新的HibernatePagingItemReader();
reader.setSessionFactory(taskOracleSessionFactory);
reader.setQueryString(“从MyObject t中选择t”);
设置页面大小(1);
读卡器.setFetchSize(10);
返回reader.read();
}
如果每次需要读取某个内容时都调用此方法,则始终会得到相同的结果,因为每次方法调用都会创建读取器
必须创建读卡器,然后每次不同的记录返回该方法,代码如下
public void setup() {
HibernatePagingItemReader<MyObject> reader = new
HibernatePagingItemReader<>();
reader.setSessionFactory(taskOracleSessionFactory);
reader.setQueryString("select t from MyObject t ");
reader.setPageSize(1);
reader.setFetchSize(10);
}
@Override
public MyObject read() throws Exception, UnexpectedInputException,
ParseException, NonTransientResourceException {
return reader.read();
}
公共作废设置(){
HibernatePagingItemReader=新建
HibernatePagingItemReader();
reader.setSessionFactory(taskOracleSessionFactory);
reader.setQueryString(“从MyObject t中选择t”);
设置页面大小(1);
读卡器.setFetchSize(10);
}
@凌驾
public MyObject read()引发异常,未预料到的PutException,
ParseException,非TransientResourceException{
返回reader.read();
}
}问题是应用程序获得了如此多的reader对象实例,而没有关闭它们的位置。从中获取数据后,通过关闭
HibernatePagingItemReader
解决了此问题
reader.close();
需要紧急帮助你的问题是什么?你会遇到什么错误?我尝试了建议的方法。现在reader返回下一项,但性能非常慢,因为它每次都会获取所有记录。我的应用程序有大量的记录,需要很长时间才能从数据库中获取。尝试通过使用fetch Size和page Size来优化此设置。请提出准确/最佳的解决方案,以批量获取记录并完成读-处理-写入周期。在这一点上,这将是非常有帮助的。我想这项工作是缓慢的,因为你一次读一条记录