|
|
1
7
您可能会尝试刷新和清除会话,比如说每100个对象… 所以执行
每100或1000个插入件。 这将刷新并清除休眠会话,并阻止它变大(可能是为什么您的100000个对象需要这么长时间)。 此外,如果您使用的是身份标识符生成器,那么Hibernate将自动关闭批插入。批量插入将提高性能。您还需要指定hibernate.jdbc.batch_-size配置属性,该属性相当于一个时间编号中的100。 Manning用Hibernate的Java持久性是这个(伟大的书——保存我的皮肤无数次)的来源。 |
|
|
2
6
您也可以考虑使用 StatelessSession 因为它是为批量操作而设计的。
|
|
|
3
3
有时候,一个奥玛佩尔不是合适的钉子锤。尤其是批处理操作,通常使用普通的旧JDBC执行更高的性能。当然,这取决于各种条件,但您至少应该将其视为一个选项,并比较这两种方法的性能。 |
|
|
4
0
这不仅仅是一个数据库插入性能问题;如果您要创建数万个对象而不执行刷新,则休眠会话将一直增长,直到您耗尽内存。 |