Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2321083
  • 博文数量: 252
  • 博客积分: 5472
  • 博客等级: 大校
  • 技术积分: 3107
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-17 18:39
文章分类

全部博文(252)

文章存档

2012年(96)

2011年(156)

分类: Java

2011-12-26 20:37:05

一个典型的事务应该使用下面的形式 在创建完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进行条件查询

阅读(9506) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~