我将Spring + Spring Data JPA与Hibernate结合使用,我需要执行一些大型且昂贵的数据库操作。
如何使用StatelessSession
执行此类操作?
最佳答案
一个解决方案是实现一个Spring工厂bean,以创建此StatelessSession
并将其注入(inject)到您的自定义存储库实现中:
public class MyRepositoryImpl implements MyRepositoryCustom {
@Autowired
private StatelessSession statelessSession;
@Override
@Transactional
public void myBatchStatements() {
Criteria c = statelessSession.createCriteria(User.class);
ScrollableResults itemCursor = c.scroll();
while (itemCursor.next()) {
myUpdate((User) itemCursor.get(0));
}
itemCursor.close();
return true;
}
}
checkout
StatelessSessionFactoryBean
和完整的Gist here。使用Spring 3.2.2,Spring Data JPA 1.2.0和Hibernate 4.1.9。感谢这个JIRA和附加了
StatelessSessionFactoryBean
代码的人。希望这对某人有帮助,它对我来说就像一种魅力。