<!-- [if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><!-- [if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]-->
<!-- [if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]-->
<!-- [if !supportLists]-->节 1.01
<!-- [endif]-->HQL
更新
/
删除大批量数据
Transaction transaction =
session
.beginTransaction();
String hql =
"UPDATE UserInfo user set
user.username=:username,user.password=:password"
;
Query query =
session
.createQuery(hql);
query.setString(paramsName[0], paramsValue
[0]);
query.executeUpdate();
transaction.commit();
注:使用
HQL
处理大批量数据会直接执行
DML
语句,从而绕过
Hibernate
的上下文和所有高速缓存。
<!-- [if !supportLists]-->节 1.02
<!-- [endif]-->HQL
创建大批量数据
Query q = session.createQuery(
"INSERT INTO LostCreditCard(type,number) SELECT
c.type,c.number FROM CreditCard c join c.user u"
);
int
createdObjects = q.executeUpdate();
<!-- [if !supportLists]-->节 1.03
<!-- [endif]-->批量更新数据
在
Hibernate.xml
文件中添加以下内容
<
property
name
=
"hibernate.jdbc.batch_size"
>
20
</
property
>
Session session =
sessionFactroy.openSession();
Transaction tx = session.beginTransaction();
Query query =
session.createQuery()
ScrollableResults cursor = query.scroll(
"FROM SettleEnterRecord"
).scroll();
int
count = 0;
while
(cursor.next()) {
SettleEnterRecord record = (SettleEnterRecord) cursor.get(0);
record.setIsValid(
"2"
);
if
(++count % 100 ==
0) {
session.flush();
session.clear();
}
}
tx.commit();
session.close();
<!-- [if !supportLists]-->节 1.04
<!-- [endif]-->批量插入数据
Session session =
sessionFactroy.openSession();
Transaction tx = session.beginTransaction();
for
(
int
i = 0 ; i < 100000; i ++){
Item
item =
new
Item
();
session.save(item);
if
(i%100 == 0){
session.flush
();
session.clear
();
}
}
tx.commit();
session.close
();
分享到:
相关推荐
以下是一些关于如何在Hibernate环境下优化批量数据处理的策略。 首先,了解问题的根源。在上述例子中,当尝试向数据库插入100,000条数据时,由于默认情况下Hibernate会将所有持久化对象保留在一级缓存中,随着数据...
3. 更强大的批处理:通过改进的批处理策略,减少了数据库交互次数,提升了大批量数据处理能力。 4. 新的事件监听器:提供了更多扩展点,方便自定义业务逻辑。 五、实际应用 在实际开发中,Hibernate常用于企业级...
此外,对于大批量数据操作,也进行了性能调优。 6. **元数据API**: 元数据API得到了增强,使得获取实体和关联信息更加方便,这对于动态生成代码或者进行元编程非常有用。 7. **实体生命周期回调**: Hibernate ...
6. 批量操作:优化大批量数据的处理,如Session.saveOrUpdateAll()。 六、最佳实践 1. 使用注解:尽量避免XML映射文件,使用注解进行ORM配置。 2. 事务管理:合理划分事务边界,避免脏读、不可重复读等问题。 3. ...
当涉及到批量数据处理时,如大批量的更新和删除操作,性能和效率成为开发者需要重点考虑的问题。本文将详细介绍如何在使用JSP和Hibernate环境下进行高效的批量更新与删除操作。 ### 批量更新与批量删除 批量操作指...
例如,合理使用缓存策略,避免N+1查询问题,以及在处理大批量数据时启用批处理等。 6. **实战应用**: 学习Hibernate不仅仅是理论,更需要通过实际项目来提升技能。可以尝试搭建一个简单的CRUD应用,逐步理解和...
12.2.1 使用HQL和JPA QL的大批量语句 12.2.2 利用批量处理 12.2.3 使用无状态的会话 12.3 数据过滤和拦截 12.3.1 动态数据过滤 12.3.2 拦截Hibernate事件 12.3.3 内核事件系统 12.3.4...
批量处理是提高数据处理效率的有效手段,文档讨论了批量插入、批量更新以及大批量更新/删除的实现方法,有助于优化数据库操作的性能。 总之,这份文档不仅是一份关于Hibernate使用的总结,更是深入学习和掌握该框架...
4. 性能优化:Hibernate框架在操作数据库时可能会产生性能瓶颈,特别是在大批量数据操作时。性能优化可以包括合理配置二级缓存、优化HQL查询语句、使用批量操作减少数据库交互次数、控制懒加载的使用等。在配置时,...
- **批量更新**:讨论如何优化大批量数据的更新操作。 - **无状态 Session 接口**:解释如何使用 StatelessSession 接口进行高效的数据操作。 - **DML 风格操作**:展示如何使用类似 DML 的风格执行批量操作。 ####...
13.3. 大批量更新/删除(Bulk update/delete) 14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. select子句 14.5. 聚集函数 14.6. 多态查询 14.7. ...
探讨了如何利用Hibernate进行高效的批量数据处理,包括批量插入、批量更新和大批量更新/删除操作,以及如何通过合理配置提升应用的整体性能。这部分对于处理大数据量的应用场景尤为重要。 七、Hibernate与J2EE应用...
批量处理技术,如批量插入、批量更新和大批量更新/删除,可以显著提高大量数据的处理效率。Hibernate的HQL(Hibernate Query Language)是一种面向对象的查询语言,用于执行复杂的数据检索和聚合操作。HQL语法类似于...
14.3. 大批量更新/删除(Bulk update/delete) 15. HQL: Hibernate查询语言 15.1. 大小写敏感性问题 15.2. from子句 15.3. 关联(Association)与连接(Join) 15.4. select子句 15.5. 聚集函数 15.6. 多态查询 ...
- 直接通过JDBC API或存储过程进行操作,这是处理大批量更新的最佳方式。 7. OpenSessionView问题: - 主要用于解决懒加载异常,将Hibernate Session与请求线程绑定,保证页面读取数据时Session开启状态。 - ...
5. 深入理解 Hibernate 的自动批处理机制,优化大批量数据操作。 通过深入学习和熟练运用 Hibernate 4.1.8.Final,开发者可以在 Java 应用中实现高效、稳定的数据库操作,提高项目开发效率,降低维护成本。无论是在...
适用于需要频繁进行大批量数据读取的应用场景,例如报表系统、数据分析平台等。 #### 二、Batch Size的合理配置 **知识点解析:** Batch Size是指在执行批量操作时,Hibernate一次提交的SQL语句数量。合理的Batch ...
14.3. 大批量更新/删除(Bulk update/delete) 15. HQL: Hibernate查询语言 15.1. 大小写敏感性问题 15.2. from子句 15.3. 关联(Association)与连接(Join) 15.4. select子句 15.5. 聚集函数 15.6. 多态查询 ...
13.3. 大批量更新/删除(Bulk update/delete) 14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. select子句 14.5. 聚集函数 14.6. 多态查询 14.7. ...