hibernate 3中要注意的地方
批量更新和删除
在HIBERNATE 3中,批量更新比2有了很大的改善。
以下是通过Hibernate3.0执行批量更新的程序代码:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String hqlUpdate = "update Customer set name = :newName where name = :oldName";
int updatedEntities = s.createQuery( hqlUpdate )
.setString( "newName", newName )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();
以下是通过Hibernate3.0执行批量删除的程序代码:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String hqlDelete = "delete Customer where name = :oldName";
int deletedEntities = s.createQuery( hqlDelete )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();
2 抓取策略
加载时一般都是一对多的关系中的,防止多次加载,默认lazy=true的,在hibernate 3中。
批量加载:在xxx.hbm.xml中,设置batchsize=n,设置每次加载的条数。
hibernate3的subselect新功能:
一个典型的场景是,比如一个class,一个student,一对多关系,比如如下
List classesList=session.createquery("select c from classes c where c.id in (1,2,3)");
for (Iterator iter=classeslist.iterator();iter.hasnext())
{
Classes classes=(Classes)iter.next();
for (Iterator iter1=classes.getStudents().iterator;iter1.hasnext())
Student student=(Student)iter1.next();
}
这样的话,会发出三条sql语句。如果用subselect的话,则只发出一条SQL语句,快了。
直接select .... from student where student.id in (select classid from ...where c.id in (1,2,3));
查询前面查询到的关联实体。
设置为<set name="students" fetch="subselect">
转载于:https://www.cnblogs.com/jackyrong/archive/2008/09/14/1290806.html
hibernate 3中要注意的地方相关推荐
- 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 如果客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置 文件内容的对象,则在系统运行中,有 很多地方都需
很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据. 如果客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象,则在系统运行中,有很多地方 ...
- 少儿编程150讲轻松学Scratch(七)-Scratch学习中需要注意的地方
前言 通常Scratch学习流程是,先掌握程序相关模块,并且了解各个模块的功能使用,然后通过项目的编写和练习,不断精进孩子的Scratch技术.那么Scratch学习中有那些需要注意的地方呢? 在所有 ...
- hibernate分页中跳转到第几页的功能
hibernate分页中跳转到第几页的功能 在之前写的"首页","上一页","下一页","尾页"功能中,我使用这样的方式 ...
- Hibernate Session中的save(),update(),delete(),saveOrUpdate() 细粒度分析
Hibernate在对资料库进行操作之前,必须先取得Session实例,相当于JDBC在对资料库操作之前,必须先取得Connection实例, Session是Hibernate操作的基础,它不是设计 ...
- Hibernate JPA中@Transient、@JsonIgnoreProperties、@JsonIgnore、@JsonFormat、@JsonSerialize等注解解释...
转自Hibernate JPA中@Transient.@JsonIgnoreProperties.@JsonIgnore.@JsonFormat.@JsonSerialize等注解解释 1.@Tran ...
- html语言的title在哪,网页中title标题使用地方有哪些
网页中title有什么地方出现? 在一个网页中title使用地方比较多,有的是作为网页html 标签,有的作为一个标签内一个属性,这里DIVCSS5为大家总结网页中标题标签与title使用地方和用法, ...
- c语言中local status6,C语言中易错的地方(一)
c++中易错的地方 1:scanf int a; int b; scanf("%d-=%d",&a,&b); printf("a=%d,b=%d" ...
- Hibernate开发中常见错误总结
org.hibernate.MappingException: Unknown entity: cn.itcast.hibernate717.helloworld.Person hibernate框架 ...
- Opencms中要注意的地方
以前写几个模块,需要涉及到自定义数据库操作的地方,一般都是在OpenCms默认的数据库里面建立新的数据表来进行操作的. [王毅原创,转载注明,http://wangyi878750.blog. ...
- castle activerecord mysql_Castle ActiveRecord配置中需要注意的地方
关于Castle 的开发可参考李会军老师的Castle 开发系列文章,里面有关于ActiveRecord学习实践系列和Castle IOC容器系列两个部分,是比较好的教程. 这里主要说明在Castle ...
最新文章
- 博问问题内容页面的前端优化
- “pybind11::module_::def”: 未找到匹配的重载函数
- nohup使得Python web项目在服务器上后台运行
- 21 WM配置-策略-入库策略1-定义固定仓位的策略F(Fixed Bin Strategy)
- Eclipse中安装TestNG插件
- “碰瓷”特斯拉翻船,卡车界明星创企Nikola身陷“骗局”危机
- Python接口自动化之数据驱动
- java之家_java
- 推荐12个漂亮的CSS3按钮实现方案
- Atitit 项目管理优化体系图 第4章 项目整合管理 开始 计划 执行 监控 变更 结束 第5章 项目范围管理 SOW工作说明书 成员通讯录 wbs大概模块级别 第6章 项目时间
- oracle主键与索引,oracle 主键 \索引
- Product UVA - 10106(大数乘法)
- python安装以及插件安装
- eclipse使用install报No compiler is provided in this environment. Perhaps you are running on a JRE rathe
- 合肥辰工科技有限公司简介及公司产品介绍
- vue项目中嵌入软键盘(中文/英文)
- photoshop修改启动图教程
- 计算机读不出相机磁盘,相机存储卡读不出来怎么办?相机存储卡无法读取
- ERROR: Unable to launch the RTL Schematic process. The input NGR file, Can not fnd the module的解决方法
- spring赌上未来的一击:WebFlux性能实测
热门文章
- 为资产分类定义折旧范围_SAP FICO零基础学习_0006_资产-概述和基本配置
- Step By Step(1),Build Convolutional Neural Networks
- 价值连城 ImageNet图像分类大神 Andrej Karpathy的采访 给AI 深度学习从业者的建议
- 翻译:swift 5通过使用泛型进行高级异步操作Operation
- Facebook算法swift实现
- php实现des加密,如何在PHP项目中实现一个DES加密解密功能
- windows会不会被linux取代,深度Linux系统会取代Windows系统吗?
- synchronized中重量级锁、偏向锁和轻量级锁的区别
- 现代通信原理3.2:线性系统的时域与频域特性
- 装tensorflow未果