Hibernate查询语言
14.1. 批量插入(Batch inserts) 如果要将很多对象持久化,你必须通过经常的调用 flush() 以及稍后调用 clear() 来控制第一级缓存的大小。 Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); for ( int i=0; i<100000; i++ ) { Customer customer = new Customer(.....); session.save(customer); if ( i % 20 == 0 ) { //20, same as the JDBC batch size //20,与JDBC批量设置相同 //flush a batch of inserts and release memory: //将本批插入的对象立即写入数据库并释放内存 session.flush(); session.clear(); } } tx.commit(); session.close(); 14.2. 批量更新(Batch updates) 【Hibernate查询语言】是ORM框架Hibernate中用于操作数据库的重要组件,它提供了面向对象的查询机制,使得开发者可以更方便地处理数据库数据。本篇主要讨论批量插入和批量更新,以及HQL(Hibernate Query Language)的一些关键特性。 14.1. 批量插入(Batch Inserts) 批量插入是一种提高数据库操作效率的技术,特别是在处理大量数据时。在Hibernate中,可以通过控制Session的flush()和clear()方法来实现批量操作。以下是一个示例: ```java Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); for (int i = 0; i < 100000; i++) { Customer customer = new Customer(.....); session.save(customer); if (i % 20 == 0) { // 每20条数据执行一次flush和clear session.flush(); // 将本批插入的对象写入数据库 session.clear(); // 清除缓存,释放内存 } } tx.commit(); session.close(); ``` 这里,每20个对象后调用一次flush()和clear(),以控制一级缓存大小并减少与数据库的交互次数,从而提高性能。需要注意的是,这里的20与JDBC的批量设置(batch size)相匹配。 14.2. 批量更新(Batch Updates) 批量更新与批量插入类似,不过涉及到的是对已存在数据的修改。批量更新的实现方式通常会结合HQL或者SQL语句,例如通过Session的createQuery()方法创建HQL更新语句,然后调用executeUpdate()执行更新操作。 15. HQL(Hibernate Query Language) HQL是Hibernate提供的一种面向对象的查询语言,它的语法类似于SQL,但更加面向对象,支持继承、多态和关联等特性。 15.1. 大小写敏感性 HQL对Java类和属性名称是大小写敏感的,但关键字和别名不区分大小写。推荐使用小写关键字以提高可读性,但当与Java代码混合时,大写关键字可能会显得不协调。 15.2. from子句 from子句用于指定要查询的类,可以使用别名简化查询。例如,`from Cat` 返回所有Cat实例,通常不需要类的全限定名,因为默认开启自动导入。可以指定别名如`from Cat as cat`,以便在后续查询中使用。 15.3. 关联(Association)与连接(Join) HQL支持多种类型的连接,如内连接(inner join)、左外连接(left outer join)、右外连接(right outer join)和全连接(full join)。例如: ```sql from Cat as cat inner join cat.mate as mate left outer join cat.kittens as kitten ``` `fetch`连接用于在查询中一次性加载关联的对象或集合,以替代延迟加载。例如: ```sql from Cat as cat inner join fetch cat.mate left join fetch cat.kittens ``` 这将确保在获取Cat对象的同时加载其mate和kittens属性,避免后续的额外查询。 Hibernate查询语言通过提供HQL和批量操作,使得在Java应用程序中进行数据库操作更加高效和便捷。理解并熟练掌握这些特性,能够极大地提升开发效率和应用性能。
剩余16页未读,继续阅读
- 粉丝: 1
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 指针扫描和内存遍历二合一工具
- 基于JavaScript的在线考试系统(编号:65965158)(1).zip
- 五相电机双闭环矢量控制模型-采用邻近四矢量SVPWM-MATLAB-Simulink仿真模型包括: (1)原理说明文档(重要):包括扇区判断、矢量作用时间计算、矢量作用顺序及切时间计算、PWM波的生成
- Linux下的cursor安装包
- springboot-教务管理系统(编号:62528147).zip
- 3dmmods_倾城系列月白_by_白嫖萌新.zip
- SVPWM+死区补偿(基于电流极性)+高频注入法辨识PMSM的dq轴电感(离线辨识)-simulink
- 微信跑腿小程序的设计与实现
- 基于 Java 实现的上位机通讯程序,可与单片机进行数据交换
- screentshot-2024.12.22-20.45.35.jpg