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">

posted on 2008-09-14 15:18 jackyrong的世界 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/jackyrong/archive/2008/09/14/1290806.html

hibernate 3中要注意的地方相关推荐

  1. 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 如果客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置 文件内容的对象,则在系统运行中,有 很多地方都需

      很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据.   如果客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象,则在系统运行中,有很多地方 ...

  2. 少儿编程150讲轻松学Scratch(七)-Scratch学习中需要注意的地方

    前言 通常Scratch学习流程是,先掌握程序相关模块,并且了解各个模块的功能使用,然后通过项目的编写和练习,不断精进孩子的Scratch技术.那么Scratch学习中有那些需要注意的地方呢? 在所有 ...

  3. hibernate分页中跳转到第几页的功能

    hibernate分页中跳转到第几页的功能 在之前写的"首页","上一页","下一页","尾页"功能中,我使用这样的方式 ...

  4. Hibernate Session中的save(),update(),delete(),saveOrUpdate() 细粒度分析

    Hibernate在对资料库进行操作之前,必须先取得Session实例,相当于JDBC在对资料库操作之前,必须先取得Connection实例, Session是Hibernate操作的基础,它不是设计 ...

  5. Hibernate JPA中@Transient、@JsonIgnoreProperties、@JsonIgnore、@JsonFormat、@JsonSerialize等注解解释...

    转自Hibernate JPA中@Transient.@JsonIgnoreProperties.@JsonIgnore.@JsonFormat.@JsonSerialize等注解解释 1.@Tran ...

  6. html语言的title在哪,网页中title标题使用地方有哪些

    网页中title有什么地方出现? 在一个网页中title使用地方比较多,有的是作为网页html 标签,有的作为一个标签内一个属性,这里DIVCSS5为大家总结网页中标题标签与title使用地方和用法, ...

  7. c语言中local status6,C语言中易错的地方(一)

    c++中易错的地方 1:scanf int a; int b; scanf("%d-=%d",&a,&b); printf("a=%d,b=%d" ...

  8. Hibernate开发中常见错误总结

    org.hibernate.MappingException: Unknown entity: cn.itcast.hibernate717.helloworld.Person hibernate框架 ...

  9. Opencms中要注意的地方

    以前写几个模块,需要涉及到自定义数据库操作的地方,一般都是在OpenCms默认的数据库里面建立新的数据表来进行操作的.     [王毅原创,转载注明,http://wangyi878750.blog. ...

  10. castle activerecord mysql_Castle ActiveRecord配置中需要注意的地方

    关于Castle 的开发可参考李会军老师的Castle 开发系列文章,里面有关于ActiveRecord学习实践系列和Castle IOC容器系列两个部分,是比较好的教程. 这里主要说明在Castle ...

最新文章

  1. 博问问题内容页面的前端优化
  2. “pybind11::module_::def”: 未找到匹配的重载函数
  3. nohup使得Python web项目在服务器上后台运行
  4. 21 WM配置-策略-入库策略1-定义固定仓位的策略F(Fixed Bin Strategy)
  5. Eclipse中安装TestNG插件
  6. “碰瓷”特斯拉翻船,卡车界明星创企Nikola身陷“骗局”危机
  7. Python接口自动化之数据驱动
  8. java之家_java
  9. 推荐12个漂亮的CSS3按钮实现方案
  10. Atitit 项目管理优化体系图 第4章 项目整合管理 开始 计划 执行 监控 变更 结束 第5章 项目范围管理  SOW工作说明书 成员通讯录 wbs大概模块级别 第6章 项目时间
  11. oracle主键与索引,oracle 主键 \索引
  12. Product UVA - 10106(大数乘法)
  13. python安装以及插件安装
  14. eclipse使用install报No compiler is provided in this environment. Perhaps you are running on a JRE rathe
  15. 合肥辰工科技有限公司简介及公司产品介绍
  16. vue项目中嵌入软键盘(中文/英文)
  17. photoshop修改启动图教程
  18. 计算机读不出相机磁盘,相机存储卡读不出来怎么办?相机存储卡无法读取
  19. ERROR: Unable to launch the RTL Schematic process. The input NGR file, Can not fnd the module的解决方法
  20. spring赌上未来的一击:WebFlux性能实测

热门文章

  1. 为资产分类定义折旧范围_SAP FICO零基础学习_0006_资产-概述和基本配置
  2. Step By Step(1),Build Convolutional Neural Networks
  3. 价值连城 ImageNet图像分类大神 Andrej Karpathy的采访 给AI 深度学习从业者的建议
  4. 翻译:swift 5通过使用泛型进行高级异步操作Operation
  5. Facebook算法swift实现
  6. php实现des加密,如何在PHP项目中实现一个DES加密解密功能
  7. windows会不会被linux取代,深度Linux系统会取代Windows系统吗?
  8. synchronized中重量级锁、偏向锁和轻量级锁的区别
  9. 现代通信原理3.2:线性系统的时域与频域特性
  10. 装tensorflow未果