一般是使用hql来删除,因为这样执行性能要高一点,不需要先查询。
但是如果你配置了hibernate的级联关系,要进行级联删除,就需要使用delete方法了
hibernate用的是hql而不是sql,sql是对数据库中的表进行操作,hql是对pojo对象进行操作进而影响数据库。
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");
}
}
在hibernate3中只要在配置文件中设置HQL/SQL查询翻译器属性:
就可以直接使用update/delete的批量更新语法。
如:Query query=session.createQuery(“delete Teacher where id<5000”);
详情可以参照我写的文章:http://pantu0914.blog.31home.cn/blogInfo/2910.html
org.hibernate.Session
Session接口里有delete()方法,可以直截用。
如按id删除User类的一个对象u:
this.sessio.delete(u);
delete from User user where user.age=18
这是删除的hql