java – Spring hibernate jdbc批量大小
我有几个场景,我认为从
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文档:
问题3:什么被归类为识别标识符生成器,??使用注释@Id和@GeneratedValue(strategy = GenerationType.AUTO)? 解决方法
这是特定于Spring事务的,但就Hibernate而言,如果您使用一个会话和一个“事务”,它将等到“flush”或“commit”实际执行操作.所以,一个交易.
不是马上.前面的响应中的相同内容适用于此:除非您明确要求“刷新”,否则Hibernate将在提交阶段执行操作.
Hibernate无法预测任何ID作为ID.例如,身份(如序列,但对于T-SQL数据库),自动增量,序列……原因很简单:Hibernate不知道每个批处理实体的生成ID是什么,因此,插入后的实体状态与之前的状态不同. Hibernate通过调用“getGeneratedKeys”的JDBC方法来处理常规方案,这允许它将数据库中的数据与其会话中的数据同步,但是不可能对批处理进行同步. 如果Hibernate确实知道实体的ID(即:assigned,hilo,uuid,……),它可以安全地执行批处理. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何查找YUM安装的JAVA_HOME环境变量详解
- 如何获取javafx中的当前屏幕详细信息?
- java – 复选框中的OnclickListener(Android Studio)
- java – 了解Hibernate的标准#setMaxResults
- java – 使用Apache CXF发送FastInfoset请求时,我可以在日
- 利用iText导出pdf文件代码
- java – “Found 1 deadlock”但跟踪显示未被任何线程锁定
- Hibernate not方法:逻辑非操作
- java开发_mysql中获取数据库表描述_源码下载
- java – EMR – 在Hadoop(和YARN)中使用自定义日志记录appe