@Test @SuppressWarnings("unchecked") public void testStatefulClose(){ SessionFactory sessionFactory = mock(SessionFactory.class); Session session = mock(Session.class); Query<Foo> scrollableResults = mock(Query.class); HibernateCursorItemReader<Foo> itemReader = new HibernateCursorItemReader<>(); itemReader.setSessionFactory(sessionFactory); itemReader.setQueryString("testQuery"); itemReader.setUseStatelessSession(false); when(sessionFactory.openSession()).thenReturn(session); when(session.createQuery("testQuery")).thenReturn(scrollableResults); when(scrollableResults.setFetchSize(0)).thenReturn(scrollableResults); itemReader.open(new ExecutionContext()); itemReader.close(); }
reader.setUseStatelessSession(this.useStatelessSession); reader.setCurrentItemCount(this.currentItemCount); reader.setMaxItemCount(this.maxItemCount);
/** * Exception scenario. * * {@link HibernateCursorItemReader#setUseStatelessSession(boolean)} can be * called only in uninitialized state. */ @Test public void testSetUseStatelessSession() { HibernateCursorItemReader<Foo> inputSource = (HibernateCursorItemReader<Foo>)reader; // initialize and call setter => error inputSource.open(new ExecutionContext()); try { inputSource.setUseStatelessSession(false); fail(); } catch (IllegalStateException e) { // expected } }
@Override protected ItemReader<Foo> getItemReader() throws Exception { SessionFactory sessionFactory = createSessionFactory(); String hsqlQuery = "from Foo"; HibernateCursorItemReader<Foo> reader = new HibernateCursorItemReader<>(); reader.setQueryString(hsqlQuery); reader.setSessionFactory(sessionFactory); reader.setUseStatelessSession(true); reader.setFetchSize(10); reader.afterPropertiesSet(); reader.setSaveState(true); return reader; }
@Override protected ItemReader<Foo> createItemReader() throws Exception { LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean(); factoryBean.setDataSource(dataSource); factoryBean.setMappingLocations(new ClassPathResource("Foo.hbm.xml", getClass())); customizeSessionFactory(factoryBean); factoryBean.afterPropertiesSet(); SessionFactory sessionFactory = factoryBean.getObject(); HibernateCursorItemReader<Foo> hibernateReader = new HibernateCursorItemReader<>(); setQuery(hibernateReader); hibernateReader.setSessionFactory(sessionFactory); hibernateReader.setUseStatelessSession(isUseStatelessSession()); hibernateReader.afterPropertiesSet(); hibernateReader.setSaveState(true); return hibernateReader; }
reader.setUseStatelessSession(this.useStatelessSession); reader.setCurrentItemCount(this.currentItemCount); reader.setMaxItemCount(this.maxItemCount);