博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate主键生成策略与save()方法是否发sql语句的研究
阅读量:7198 次
发布时间:2019-06-29

本文共 1483 字,大约阅读时间需要 4 分钟。

    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);  
       }  
    } 

转载于:https://www.cnblogs.com/hainange/archive/2012/03/16/6153653.html

你可能感兴趣的文章
Html.ActionLink
查看>>
Qt事件处理(二)
查看>>
Baruwa 1.1.2 发布,邮件监控系统
查看>>
C# 的关键字系列(4 of n)
查看>>
在获取textbox的时候 如果要转换为int的 可能会出错 如果为空
查看>>
Monkey Studio IDE | The way IDEs should be
查看>>
处理散列冲突的方法
查看>>
「Linux」Linux下根据CET听力文件关键字和lcr时间对mp3进行剪辑分割
查看>>
C/C++通过WMI和系统API函数获取获取系统硬件配置信息(转)
查看>>
浅谈SQL Server中的三种物理连接操作
查看>>
浅谈Redis数据库的键值设计(转)
查看>>
Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
查看>>
linux中的文件结构
查看>>
汇编学习(3)寄存器
查看>>
CSS quotes 属性
查看>>
Visual Studio统计有效代码行数
查看>>
分享python 元组排序知识点
查看>>
django 获取系统当前时间 和linux 系统当前时间不一致 问题处理。
查看>>
项目中用到的开源框架
查看>>
sl学习疑问
查看>>