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”>