java框架hibernate批量删除数据的时候用啥方法效率比较高?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java框架hibernate批量删除数据的时候用啥方法效率比较高?相关的知识,希望对你有一定的参考价值。

参考技术A 你可以试一下将ID放到list中,hibernate可以传入list的参数,如:\\x0d\\x0aString hql = "delete bean where id in (:idList)";\\x0d\\x0aQuery query = this.getSession().createQuery(hql);\\x0d\\x0aquery.serParameterList("idList",idList);//第二个参数idList为传入参数,idList中的值的类型与DB中ID类型一致\\x0d\\x0aquery.executeUpdate();

hibernate如何删除数据

大致代码应该怎么写?

"拼串"形成的HQL语句的写法,其能够形成一条语句,从而效率得到最大的提升。

参考技术A 用Query删除
Session
session=HibernateSessionFactory.getSession();
String
hql="delete
People
where
id=:id";
Transaction
t=null;
try

t=session.beginTransaction();
Query
q=session.createQuery(hql);
q.setParameter("id",
id);
q.executeUpdate();
t.commit();
catch(Exception
ex)

if(t!=null)

t.rollback();

finally

session.close();

直接用Session
People
p=null;
Session
session=HibernateSessionFactory.getSession();
p=(People)session.get(People.class,
id);
if(p!=null)
session.delete(people);
//都要用事务否则不删除
参考技术B 用Query删除
Session session=HibernateSessionFactory.getSession();
String hql="delete People where id=:id";
Transaction t=null;
try

t=session.beginTransaction();
Query q=session.createQuery(hql);
q.setParameter("id", id);
q.executeUpdate();
t.commit();
catch(Exception ex)

if(t!=null)

t.rollback();

finally

session.close();

直接用Session
People p=null;
Session session=HibernateSessionFactory.getSession();
p=(People)session.get(People.class, id);
if(p!=null)
session.delete(people);
//都要用事务否则不删除本回答被提问者采纳

以上是关于java框架hibernate批量删除数据的时候用啥方法效率比较高?的主要内容,如果未能解决你的问题,请参考以下文章

怎样解决hibernate中一级缓存导致数据不能刷新

hibernate如何保存blob数据

用hibernate 查询数据为修改前的数据

Java中用Hibernate框架:实现多对多关联删除问题!

Hibernate框架学习——批量查询(概述)

hibernate的批量删除