Hibernate核心类用法-使用Transaction管理事务

一个典型的事务应该使用下面的形式 在创建完Session对象后即使用beginTransaction()启动事务 从此开始直到commit()之间的代码 都会处于同一个事务中 这两个函数之间所有的数据库代码都会在commit()时一次性提交 在提交时 如果某一句代码执行出现异常 就会回滚这一次事物之间的所有执行代码

 

  1. public User getUser(String username) throws HibernateException {
  2.         Session session = null;
  3.         Transaction tx = null;
  4.         User user = null;
  5.         try {
  6.             session = HibernateSessionFactory.currentSession();
  7.             tx = session.beginTransaction();
  8.             Query query = session.createQuery("from User where username=?");
  9.             query.setString(0, username.trim());
  10.             user = (User)query.uniqueResult();
  11.             query = null;
  12.             tx.commit ();
  13.         }catch(HibernateException e){
  14.             throw e;
  15.         }finally{
  16.             if (tx!=null) {
  17.                 tx.rollback();
  18.             }
  19.             HibernateSessionFactory.closeSession();
  20.         }
  21.         return user;
  22.     }

 

如果Session抛出异常 事务必须回滚 Session也会被废弃 在异常发生后 Session的内部状态可能会与数据库失去同步

 

除了这些  Hibernate的核心类操作 还有

使用Session对数据库的操作

使用Query进行HQL查询

使用Criteria进行条件查询

转载于:https://www.cnblogs.com/uncle-box/p/5930550.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值