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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate删除操作,一般如何实现相关的知识,希望对你有一定的参考价值。

根据id删除
是先把数据查出来,封装成vo,然后执行getHibernateTemplate().delete(vo);
还是直接用sql实现
没有任何连级关系,就是单独一张表
1楼,用sql才能直接删除而不用查询吧

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

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

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

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

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

参考资料:http://pantu0914.blog.31home.cn/blogInfo/2910.html

参考技术C org.hibernate.Session
Session接口里有delete()方法,可以直截用。
如按id删除User类的一个对象u:
this.sessio.delete(u);
参考技术D delete from User user where user.age=18
这是删除的hql

hibernate 多对多操作(级联操作)

一、级联保存

分别在用户和角色配置文件中在set标签中加入cascade="save-update";

 

 

示例:添加同时添加用户对象和角色对象并关联两个对象:

 

 

只需将角色放入用户对象,只保存用户对象即可。

二、级联删除

在set标签中加入cascade="delete";

示例删除ID是3的user对象

需注意的是,这种方式一般不用,因为删除id=3的user对象,会将与次user有关的role对象(role中外键等于3)删除。

三、维护第三张表

示例

使id=2的用户拥有id=3的角色

使id=2的用户不在拥有id=3的角色

 

以上是关于hibernate删除操作,一般如何实现的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate缓存如何实现

spring的事务管理有几种方式实现,如何实现

HashMap 如何实现/Hibernate 的原理

如何使用 Hibernate 从 Sql 数据库中更新、删除对象?

SSH框架整合中Hibernate实现Dao层常用结构

hibernate 中的ORM是如何与数据库实现存储和查询的