1

我想使用 HibernateTemplate 执行休眠批量插入,但我无法找到包含此类的正确 jar。我知道它应该出现在 spring.jar 中,但无法找到下载 spring.jar 的位置。为了得到这个 jar,我也尝试下载整个 spring 框架,但不幸的是在下载的包中没有找到类似 spring.jar 的东西。可能是名称已更改,请告诉我在哪个 jar 中可以找到这个 HibernateTemplate 类?

另外,我们应该使用 HibernateTemplate 类在休眠中批量插入还是在休眠中批量插入有其他更好的选择?

问候,

4

2 回答 2

1

不建议使用 Hibernate 进行批处理。除非你已经有一个用 Hibernate 构建的业务层,并且你想重用一些代码,否则你应该在普通的旧 JDBC 中进行批处理,也许由 Spring Batch 之类的框架管理。

如果你想使用 Hibernate,那么你应该使用StatelessSession.

不需要任何东西,HibernateTemplate因为 Session 已经为您提供了所需的一切。


编辑: 您可以处理交易:

Session session = sessionFactory.openStatelessSession();
Transaction tx = session.beginTransaction();
// DO SOMETHING
tx.commit();
session.close();

顺便说一句,如果您为 10 个项目创建事务,那么我想您想将处理拆分为 10 个插入的多个事务。交易真的需要吗?因为无论如何,一个事务可能会失败,而其他事务不会,这会给您留下一些插入的实体,而有些则没有。

如果您想要批处理的原子性(全部插入或未插入),您必须为所有元素运行事务,而不仅仅是其中的 10 个。但是请注意不要锁定您的数据库...我认为将大型长时间运行的事务用于批处理并不是一个好主意。相反,您可能应该自行补偿插入失败。

于 2012-11-04T13:03:38.630 回答
0

HibernateTemplate 类是其中的一部分,org.springframework.orm-3.1.3.RELEASE.jar包含在spring-framework-3.1.3.RELEASE.zip中

如果您已经在项目中使用了 spring 框架,那么没有理由不使用 HibernateTemplate 进行批量更新。HibernateTemplate 的优点是你不必关心 Hibernate Sessions

于 2012-11-03T18:58:03.227 回答