jel*_*ies 10 spring hibernate jpa stateless-session spring-data-jpa
我正在使用Spring + Spring Data JPA和Hibernate,我需要执行一些大而昂贵的数据库操作.
我如何使用a StatelessSession来执行这些操作?
jel*_*ies 11
解决方案是实现Spring工厂bean来创建它StatelessSession并将其注入自定义存储库实现中:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
在这里查看StatelessSessionFactoryBean完整的要点.使用Spring 3.2.2,Spring Data JPA 1.2.0和Hibernate 4.1.9.
感谢这个JIRA和附加StatelessSessionFactoryBean代码的人.希望这有助于某人,它对我来说就像一个魅力.
小智 5
为了获得更好的性能结果,您可以通过在 SessionFactory 配置上设置属性(即: )来启用SessionFactory/上的 jdbc 批处理语句。EntityManagerhibernate.jdbc.batch_sizeLocalEntityManagerFactoryBean
为了获得 jdbc 批量插入/更新的最佳优势,请写入尽可能多的相同类型的实体。Hibernate 将检测您何时编写另一种实体类型,并自动刷新批处理,即使它尚未达到配置的批处理大小。
使用 StatelessSession 的行为与使用 Spring 之类的东西基本相同JdbcTemplate。使用 SQL 的好处StatelessSession是 SQL 的映射和转换由 Hibernate 处理。当您使用 my 时,StatelessSessionFactoryBean您甚至可以在一笔交易中混合使用Session和StatelessSession混合。但要小心修改由 加载的实体Session并用 持久化它, StatelessSession因为这会导致锁定问题。
| 归档时间: |
|
| 查看次数: |
10022 次 |
| 最近记录: |