介绍
本篇文章给大家分享的是有关利用hibernate怎么对数据库进行增删改查操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
删除用户表中个一条数据,是需要更具用户表的主键id值来删除的。首先根据id值向数据库中查询出来对应的对象。可以采用两种方式一是会话的得到方法,一个是会话的负载方法。
会话的得到方法:调用这个方法会返回一个对象对象,然后我们对其强制转换.Useruser=session.get(用户(用户)。类,“402881 e5441c035e01441c0360510003”);,当我们传递id值在数据中查找没有相应的结果时,得到的方法会返回一个null值。
,,,区别:得到方法加载的时候会立刻发出sql语句去查询,而负载方法在执行的时候没有立刻的发出sql去查询,生成一个代理用户,没有生成真正的用户。当我们真正的去用这个用户的时候才会加载真正的User.Load()支持延迟加载,而得到()不支持延迟加载. get加载的对象不存在时返回的是零对象,而负载()加载对象不存在时会抛出ObjectNotFoundException异常。
,,,会话的负载方法:同样是调用这个方法返回一个对象对象,再进行强制转换。
然后我们通过得到或负载加载上来对应用户表id的对象,再调用会话的删除方法删除该对象同时删除表中的一条记录,代码如下所示。
,,,,,,,,,
publicvoid testDel1 () { Sessionsession=零; 试一试 { 会话=HibernateUtils.getSession ();//开启事务。 session.beginTransaction ();//采用负载查询不存在的数据,hibernate会抛出对象没有发现异常 Useruser=(用户)session.load (User.class,“402881 e5441c035e01441c0360510003");//删除表中的记录。//删除,建议用此种方式删除,先加载再删除。 session.delete(用户);//提交事务。把内存的改变提交到数据库上。 .commit session.getTransaction () (); }捕捉(异常e) { e.printStackTrace (); .rollback session.getTransaction () (); 最后}{ HibernateUtils.closeSession(会话); } },
。
代码如下所示。
//测试方法以测试开头。测试德尔方法。返回存在的加载的。 publicvoid testDel2 () { Sessionsession=零; 试一试 { 会话=HibernateUtils.getSession ();//开启事务。 session.beginTransaction ();//手动构造的分离对象。 用户用户=新用户(); user.setId (“402881 e4441b3d1c01441b3f5dfe0001"); session.delete(用户);//提交事务。把内存的改变提交到数据库上。 .commit session.getTransaction () (); }捕捉(异常e) { e.printStackTrace (); .rollback session.getTransaction () (); 最后}{ HibernateUtils.closeSession(会话); } }
一般查询,代码如下所示。
//查询方法。 publicvoid testQuery1 () { Sessionsession=零; 试一试 { 会话=HibernateUtils.getSession (); session.beginTransaction ();//参数是一个字符串,是HQL的查询语句。注意此时的的UserU为大写,为对象的,而不是表的。 Queryquery=session.createQuery(“从User");//使方用列表法。 userList=query.list列表();//迭代器去迭代。 (迭代器iter=userList.iterator (); iter.hasNext ();) { Useruser=(用户)iter.next (); System.out.println (“id=? user.getId () +“name=? user.getName ()); } .commit session.getTransaction () (); }捕捉(异常e) { e.printStackTrace (); .rollback session.getTransaction () (); 最后}{ HibernateUtils.closeSession(会话); } }
,分页查询,代码如下所示。
//分页查询,从什么地方查,查几个; publicvoid testQuery2 () { Sessionsession=零; 试一试 { 会话=HibernateUtils.getSession (); session.beginTransaction ();//参数是一个字符串,是HQL的查询语句。注意此时的的UserU为大写,为对象的,而不是表的。 Queryquery=session.createQuery(“从User");//从第一个开始查起。可以设置从第几个查起。 query.setFirstResult (0);//最大条数为两个 query.setMaxResults (2);//使方用列表法。 userList=query.list列表();//迭代器去迭代。 (迭代器iter=userList.iterator (); iter.hasNext ();) { Useruser=(用户)iter.next (); System.out.println (“id=? user.getId () +“name=? user.getName ()); } .commit session.getTransaction () (); }捕捉(异常e) { e.printStackTrace (); .rollback session.getTransaction () (); 最后}{ HibernateUtils.closeSession(会话); } }利用hibernate怎么对数据库进行增删改查操作