hibernate删除操作,一般如何实现

2024-11-25 17:14:41
推荐回答(5个)
回答1:

一般是使用hql来删除,因为这样执行性能要高一点,不需要先查询。

但是如果你配置了hibernate的级联关系,要进行级联删除,就需要使用delete方法了

hibernate用的是hql而不是sql,sql是对数据库中的表进行操作,hql是对pojo对象进行操作进而影响数据库。

回答2:

Java编程用hibernate做的简单删除操作,TUser类是表对应的POJO类,TUserDAO是TUser的dao类,也就是它的操作类.,代码如下:

import org.hibernate.Query;
import tt.TUser;
import tt.TUserDAO;
public class Delete {
public static void main(String[] args)//主方法,用于运行二个删除操作的方法
{
   //Delete.deleteOne(13);
   //Delete.deleteTwo(10);
   //Delete.deleteThree();//没成功
}
public static void deleteOne(int id)//第一个操作方法
{
  TUserDAO dao=new TUserDAO();//创建一个TUser dao的实例
  org.hibernate.Transaction tx=dao.getSession().beginTransaction();//开始一个事务
  TUser user =new TUser();
  user=(TUser)dao.getSession().get(TUser.class, id);//跟据ID取得一个对象
  dao.getSession().delete(user);//删除这个对象
  tx.commit();//提交事务
  dao.getSession().close();关闭session
  System.out.println("Delete");
}
public static void deleteTwo(int id)//第二个操作方法
{
   TUserDAO dao=new TUserDAO();
   org.hibernate.Transaction tx=dao.getSession().beginTransaction();//开始一个事务
   Query query = dao.getSession().createQuery("delete from TUser where IId=?");
//跟据条件生成HQL语句
   query.setInteger(0, id);//设定条件参数
   query.executeUpdate();执行语句
   tx.commit();//提交事务
   dao.getSession().close();关闭session
    System.out.println("Delete");
 }
}

回答3:

在hibernate3中只要在配置文件中设置HQL/SQL查询翻译器属性:
org.hibernate.hql.ast.ASTQueryTranslatorFactory
就可以直接使用update/delete的批量更新语法。
如:Query query=session.createQuery(“delete Teacher where id<5000”);
详情可以参照我写的文章:http://pantu0914.blog.31home.cn/blogInfo/2910.html

回答4:

org.hibernate.Session
Session接口里有delete()方法,可以直截用。
如按id删除User类的一个对象u:
this.sessio.delete(u);

回答5:

delete from User user where user.age=18
这是删除的hql