java – Spring hibernate jdbc批量大小
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring hibernate jdbc批量大小,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1706字,纯文字阅读大概需要3分钟。
内容图文
![java – Spring hibernate jdbc批量大小](/upload/InfoBanner/zyjiaocheng/742/37fb9c6eca9940fa806d461ef9b74aa8.jpg)
我有几个场景,我认为从hibernate documenation有点不清楚.
数据类:
class HibernateDao {
// ...
@Transactional
public void store(List<Object> batch) {
for(Object o : batch) {
hibernate.store(o);
}
}
}
场景1
hibernate.jdbc.batch_size = 1
Q1:使用10个项目的集合调用store(..)会发生什么?会有10个1个交易还是只有一个?
情景2
hibernate.jdbc.batch_size = 10
Q2:使用1个项目的集合调用store(..)会发生什么?无论batch_size属性如何,它是否会立即写入后备存储?
从hibernate文档:
Hibernate disables insert batching at the JDBC level transparently if you use an identity identifier generator
问题3:什么被归类为识别标识符生成器,??使用注释@Id和@GeneratedValue(strategy = GenerationType.AUTO)?
解决方法:
Q1: What happens when invoking store(..) with a collection of 10 items? Will there be 10 x 1 transactions or only one?
这是特定于Spring事务的,但就Hibernate而言,如果您使用一个会话和一个“事务”,它将等到“flush”或“commit”实际执行操作.所以,一个交易.
Q2: What happens when invoking store(..) with a collection of 1 items? Will it immediately be written to the backing store regardless of the batch_size property?
不是马上.前面的响应中的相同内容适用于此:除非您明确要求“刷新”,否则Hibernate将在提交阶段执行操作.
Q3: What is classified as an identify identifier generator, using the annotations @Id and @GeneratedValue(strategy = GenerationType.AUTO)?
Hibernate无法预测任何ID作为ID.例如,身份(如序列,但对于T-SQL数据库),自动增量,序列……原因很简单:Hibernate不知道每个批处理实体的生成ID是什么,因此,插入后的实体状态与之前的状态不同. Hibernate通过调用“getGeneratedKeys”的JDBC方法来处理常规方案,这允许它将数据库中的数据与其会话中的数据同步,但是不可能对批处理进行同步.
如果Hibernate确实知道实体的ID(即:assigned,hilo,uuid,……),它可以安全地执行批处理.
内容总结
以上是互联网集市为您收集整理的java – Spring hibernate jdbc批量大小全部内容,希望文章能够帮你解决java – Spring hibernate jdbc批量大小所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。