用户登录
用户注册

分享至

hibernate hql优化

  • 作者: 丿画忆
  • 来源: 51数据库
  • 2020-10-14

在Hibernate 2中,如果需要对任何数据进行修改和删除操作,都需要先执行查询操作,在得到要修改或者删除的数据后,再对该数据进行相应的操作处理。在数据量少的情况下采用这种处理方式没有问题,但需要处理大量数据的时候就可能存在以下的问题: 

   占用大量的内存。 

   需要多次执行update/delete语句,而每次执行只能处理一条数据。 

  以上两个问题的出现会严重影响系统的性能。因此,在Hibernate 3中引入了用于批量更新或者删除数据的HQL语句。这样,开发人员就可以一次更新或者删除多条记录,而不用每次都一个一个地修改或者删除记录了。 

  如果要删除所有的User对象(也就是User对象所对应表中的记录),则可以直接使用下面的HQL语句: 

  delete User 

  而在执行这个HQL语句时,需要调用Query对象的executeUpdate()方法,具体的实例如下所示: 

  String HQL="delete User"; 

  Query query=session.createQuery(HQL); 

  int size=query.executeUpdate(); 

  采用这种方式进行数据的修改和删除时与直接使用JDBC的方式在性能上相差无几,是推荐使用的正确方法。 

  如果不能采用HQL语句进行大量数据的修改,也就是说只能使用取出再修改的方式时,也会遇到批量插入时的内存溢出问题,所以也要采用上面所提供的处理方法来进行类似的处理。


软件
前端设计
程序设计
Java相关