hibernate增删改查操作代码
hibernate对数据删除操作
删除user表中个一条数据,是需要更具user表的主键id值来删除的。首先根据id值向数据库中查询出来对应的对象。可以采用两种方式一是session的get方法,一个是session的load方法。
session的get方法:调用这个方法会返回一个object对象。然后我们对其强制转换。useruser = (user)session.get(user.class,” 402881e5441c035e01441c0360510003”); 当我们传递id值在数据中查找没有相应的结果时,get方法会返回一个null值。
区别:get方法加载的时候会立刻发出sql语句去查询,而load方法在执行的时候没有立刻的发出sql去查询,生成一个代理user,没有生成真正的user。当我们真正的去用这个user的时候才会加载真正的user。load()支持延迟加载,而get()不支持延迟加载。get加载的对象不存在时返回的是null对象,而load()加载对象不存在时会抛出objectnotfoundexception异常。
session的load方法:同样是调用这个方法返回一个object对象,再进行强制转换。
然后我们通过get或load加载上来对应user表id的对象,再调用session的delete方法删除该对象同时删除表中的一条记录,代码如下所示。
第一种删除方式。
publicvoid testdel1() { sessionsession =null; try { session= hibernateutils.getsession(); //开启事务. session.begintransaction(); //采用load查询不存在的数据,hibernate会抛出object not found exception useruser = (user)session.load(user.class,"402881e5441c035e01441c0360510003"); //删除表中的记录. //删除,建议用此种方式删除,先加载再删除. session.delete(user); //提交事务.把内存的改变提交到数据库上. session.gettransaction().commit(); }catch(exception e){ e.printstacktrace(); session.gettransaction().rollback(); }finally{ hibernateutils.closesession(session); } }
第二种删除方式,手动构造detached对象再删除。
代码如下所示。
//测试方法以test开头.测试del方法.返回存在的加载的. publicvoid testdel2() { sessionsession =null; try { session= hibernateutils.getsession(); //开启事务. session.begintransaction(); //手动构造的detached对象. user user =new user(); user.setid("402881e4441b3d1c01441b3f5dfe0001"); session.delete(user); //提交事务.把内存的改变提交到数据库上. session.gettransaction().commit(); }catch(exception e){ e.printstacktrace(); session.gettransaction().rollback(); }finally{ hibernateutils.closesession(session); } }
hibernate对数据查询操作
一般查询,代码如下所示。
//查询方法. publicvoid testquery1() { sessionsession =null; try { session= hibernateutils.getsession(); session.begintransaction(); //参数是一个字符串,是hql的查询语句.注意此时的的useru为大写,为对象的,而不是表的. queryquery = session.createquery("from user"); //使用list方法. list userlist = query.list(); //迭代器去迭代. for(iterator iter=userlist.iterator();iter.hasnext();) { useruser =(user)iter.next(); system.out.println("id="+user.getid() + "name="+user.getname()); } session.gettransaction().commit(); }catch(exception e){ e.printstacktrace(); session.gettransaction().rollback(); }finally{ hibernateutils.closesession(session); } }
分页查询,代码如下所示。
//分页查询,从什么地方查,查几个; publicvoid testquery2() { sessionsession =null; try { session=hibernateutils.getsession(); session.begintransaction(); //参数是一个字符串,是hql的查询语句.注意此时的的useru为大写,为对象的,而不是表的. queryquery = session.createquery("from user"); //从第一个开始查起.可以设置从第几个查起. query.setfirstresult(0); //最大条数为两个 query.setmaxresults(2); //使用list方法. list userlist = query.list(); //迭代器去迭代. for(iterator iter=userlist.iterator();iter.hasnext();) { useruser =(user)iter.next(); system.out.println("id="+user.getid() + "name="+user.getname()); } session.gettransaction().commit(); }catch(exception e){ e.printstacktrace(); session.gettransaction().rollback(); }finally{ hibernateutils.closesession(session); } }
hibernate对数据更新操作
手动构造detached对象,调用session的update()方法,代码如下所示。
//测试方法以test开头.测试update方法.返回存在的加载的. publicvoid testupdate1() { sessionsession =null; try { session= hibernateutils.getsession(); //开启事务. session.begintransaction(); //采用load查询不存在的数据,hibernate会抛出object not found exception //手动构造的detached对象. useruser =newuser(); user.setid("402881e5441bfb0601441bfb075b0002"); user.setname("周六"); session.update(user); //提交事务.把内存的改变提交到数据库上. session.gettransaction().commit(); }catch(exception e){ e.printstacktrace(); session.gettransaction().rollback(); }finally{ hibernateutils.closesession(session); } }
加载对象,调用session的update()方法,让对象处于持久化状态的时候进行更新操作,代码如下所示。
//测试方法以test开头.测试update方法.返回存在的加载的. publicvoid testupdate2() { sessionsession =null; try { session= hibernateutils.getsession(); //开启事务. session.begintransaction(); //采用load查询不存在的数据,hibernate会抛出object not found exception //先把要更新的查出来. //建议采用此种方式,先加载再更新的方式. useruser = (user)session.load(user.class,"402881e5441bfb0601441bfb075b0002"); //查出来的话就直接放入了.处于持久化状态. user.setname("周日"); //显示的调用,因为为持久化状态也可以不显示调用. session.update(user); //提交事务.把内存的改变提交到数据库上. session.gettransaction().commit(); }catch(exceptione){ e.printstacktrace(); session.gettransaction().rollback(); }finally{ hibernateutils.closesession(session); } }
总结
以上所述是小编给大家介绍的hibernate增删改查操作代码,希望对大家有所帮助
上一篇: Eclipse设置断点调试的方法
下一篇: Java小程序计算圆周率代码