使用Hibernate如何实现对数据库进行增删改查操作

  介绍

使用Hibernate如何实现对数据库进行增删改查操作?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强> 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 ();//手动构造的分离对象。
  Useruser=新用户();
  user.setId (“402881 e4441b3d1c01441b3f5dfe0001");
  session.delete(用户);//提交事务。把内存的改变提交到数据库上。
  .commit session.getTransaction () ();
  
  }捕捉(异常e) {
  e.printStackTrace ();
  .rollback session.getTransaction () ();
  最后}{
  HibernateUtils.closeSession(会话);
  }
  
  }

<>强Hibernate对数据查询操作

一般查询,代码如下所示。

//查询方法。   publicvoid testQuery1 ()   {   Sessionsession=零;   试一试   {   会话=HibernateUtils.getSession ();      session.beginTransaction ();//参数是一个字符串,是HQL的查询语句。注意此时的的UserU为大写,为对象的,而不是表的。   Queryquery=session.createQuery(“从User");//使方用列表法。   ListuserList=query.list ();//迭代器去迭代。   (Iteratoriter=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);//使方用列表法。   ListuserList=query.list ();//迭代器去迭代。   (Iteratoriter=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如何实现对数据库进行增删改查操作