Hibernate学习--Session生命周期的不同状态

前言

总结一下Session的不同状态。

Session的生命周期不同状态

三种状态

Hibernate生命周期中java对象的三种状态:

1、临时状态(transient):用new语句创建,还没有被持久化,不处于Session的缓存中;
2、持久化状态(persistent):已使用save()或者saveOrUpdate()方法,处于Session的缓存中和数据库表中,生成了自己的Oid标识;
3、游离状态(detached):被持久化,已使用evict(Object),session.close()或者使用clear()清除缓存,不再处于Session的缓存中或不存在数据库表中,但是依然是存在自己的OId标识。

三种状态的转化图解

session

代码设计

1.创建session,开始事务
@Before
    public void init() {
        System.out.println("start!");
        // 创建配置对象
        Configuration config = new Configuration().configure();
        // 建立SessionFactory
        SessionFactory factory = config.buildSessionFactory();
        // 顺序1--开启会话
        session = factory.openSession();
        // 顺序2--开启事务
        session.beginTransaction();

    }
2.save( )
@Test
    public void testSavePerson2() {
        // 生成person对象
        Person person = new Person(14, "gaohan", "222", "girl", "qq.com");
        // 保存对象
        session.save(person);
        session.update(person);
    }
3.提交事务,关闭session
@After
    public void destory() {
        System.out.println("end!");
        // 顺序3--(关闭)提交事务
        session.getTransaction().commit();
        // 顺序4--关闭会话
        session.close();

    }

Session持久化过程

图解

jiuhua

参考资料

http://www.cnblogs.com/wangkai1990/p/5704529.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值