Hibernate主键生成策略与save()方法是否发sql语句的研究

    public class SessionFlushTest extends TestCase {  
      
    /**
    * 测试uuid主键生成策略
    */  
    public void testSave1() {  
       Session session = null;  
       Transaction tx = null;  
       try {  
        session = HibernateUtils.getSession();  
        tx = session.beginTransaction();  
      
        User1 user = new User1();  
        user.setName("李四");  
        user.setPassword("123");  
        user.setCreateTime(new Date());  
        user.setExpireTime(new Date());  
         
        //因为user的主键生成侧路采用的是uuid,所以调用完成save后,只是将user纳入到了session的管理  
        //不会发出insert语句,但是id已经生成,session中existsInDatebase状态为false  
        session.save(user);  
         
        //调用flush,hibernate会清理缓存,执行sql  
        //如果数据库的隔离级别设置为为提交读,那么我们可以看到flush过的数据  
        //并且session中existsInDatebase状态为true  
        session.flush();  
         
        //提交事务  
        //默认情况下commit操作会先执行flush清理缓存,所以不用显示的调用flush  
        //commit后数据是无法回滚的  
        tx.commit();  
       }catch(Exception e) {  
        e.printStackTrace();  
        tx.rollback();  
       }finally {  
        HibernateUtils.closeSession(session);  
       }  
    }  
      
    /**
    * 测试native主键生成策略
    */  
    public void testSave2() {  
       Session session = null;  
       Transaction tx = null;  
       try {  
        session = HibernateUtils.getSession();  
        tx = session.beginTransaction();  
      
        User2 user = new User2();  
        user.setName("张三1");  
        user.setPassword("123");  
        user.setCreateTime(new Date());  
        user.setExpireTime(new Date());  
         
        //因为user的主键生成策略为native,所以调用session.save后,将执行insert语句,返回有数据库生成的id  
        //纳入了session的管理,修改了session中existsInDatebase状态为true  
        //如果数据库的隔离级别设置为为提交读,那么我们可以看到save过的数据  
        session.save(user);  
        tx.commit();  
       }catch(Exception e) {  
        e.printStackTrace();  
        tx.rollback();  
       }finally {  
        HibernateUtils.closeSession(session);  
       }  
    } 

posted on 2012-03-16 18:24  海南一哥  阅读(133)  评论(0编辑  收藏  举报

导航