持久化对象生命周期

本文介绍了持久化对象在不同状态间的转换过程,包括Transient、Persistent、Detached和Removed状态,并详细解释了Session对象如何通过核心方法如saveOrUpdate(), flush(), close()等管理这些状态的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

04章持久化对象生命周期

 

持久化对象生命周期的状态

Session对象的“脏“数据检查

Session接口的核心方法

  saveOrUpdate()方法

  flush()方法

  close()方法

不可更改的持久化对象

 

 

 

持久化对象生命周期的状态

 

>new –>Transient-à垃圾收集

>newàTransient save() saveOrUpdate() merge() persist() à从下面的Persistent 开始---à

>load() get() Query list() Query iterate()àPersistent delete()àRemovedà垃圾收集

Detachedà垃圾收集

Detachedàupdate() saveOrUpdate() merge() àPersistent  delete()—

 

Detached-àupdate() saveOrUpdate() merge() -àPersistent àevcit() clear() close() àDetached

 

 

Transient

  Guestbook gb = new Guestbook();

  gb.setName(“flf”);

      gb.setEmail(“flfn8a@163.com”);

gb.setrPhone(“44477”);

session.save(gb);

 

 

Persistent

Session sessionn = HibernateSessionFactoryUtil.getSessionHibernate.getCurrentSession();

Transation tx = session beginTransaction();

Guestbook gb = new Guestbook();

gb.setName(“flf”);

gb.setEmail(“iofj@2893.com”);

   session.save(gb)

Detached

Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();

Tansaction tx = session.beginTransaction();

      Guestbook gb = (Guestbook)session.get(Guestbook.class, new Integer(1));

      tx.commit();

      session.close();

      gb.setName(“flf”);

Removed

Removed

 

Session session = HibernateSessionFactoryUtil.getSessionHibernate().getCurrentSession();

Transaction tx = sessionn beginTransaction();

Guestbook gb = (Guestbook)session.get(Guestbook.class,new Integer(1));

session.delete(gb);

tx.commit();

 

 

 

Session 对象的“脏数据检查

Persistent状态的对象受Session的管理,我们对对象的属性值的修改,在Session对象调用close()方法或

Transaction对象执行commit()方法之后,数据库中对应的数据也会跟着进行同步更新

Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();

Transaction tx = session.beginTransaction();

Guestbook gb = (Guestbook)session.get(Guestbook.class,new Integer(1));

gb.setName(“ff”);

gb.setPhone(“45455213”);

 

tx.commit();

Session接口的核心方法

 

saveOrUpdate()方法

 

Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();

Transaction tx = session.beginTransaction();

Guestbook gb = (Guestbook)session.get(Guestbook.class,new Integer(1));

tx.commit();

gb.setName(“flf”);

session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();

tx.session.beginTransaction();

sessionn.saveOrUpdate(gb);

tx.commit();

 

 

flush()方法 清除缓存 一级与二级缓存

 

close()方法 关闭session对象

session close()对象与事务邦定在一起,一回滚则session关闭

 

 

 不可更改的持久化对象

所操作的持久化对象是只读的,只进行读取,不进行增加、更新和删除的操作

 

<class name=com.flf.Login table=”login” mutable=”false”>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值