hibernate删除操作,一般如何实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate删除操作,一般如何实现相关的知识,希望对你有一定的参考价值。
根据id删除
是先把数据查出来,封装成vo,然后执行getHibernateTemplate().delete(vo);
还是直接用sql实现
没有任何连级关系,就是单独一张表
1楼,用sql才能直接删除而不用查询吧
但是如果你配置了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.SessionSession接口里有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删除操作,一般如何实现的主要内容,如果未能解决你的问题,请参考以下文章