第四章Hibernate持久化对象的生命周期

第四章 持久化对象的生命周期

  •    持久化对象生命周期的状态
  •   Session对象的"脏"数据检查
  •   Session接口的核心方法

         saveOrUpdate()方法

flush()方法

         close()方法
  •  不可更改的持久化对象

   Transient 瞬态 Persistent 持久态 Removed移除态 Detached 脱离态

   1.Transient

User user = new User("crazy","HF");

    2.Persistent

Session session = new Configuration().configure().buildSessionFactory().openSession();

session.beginTransaction();
User user = new User("crazy","HF");
session.save(user);
session.getTransaction().commit();

   save之后,user对象从瞬态转为持久态。

   3.Detached

Session session = new Configuraion().configure().buildSessionFactory().openSession();
session.beginTansaction();

User user = (User)session.get(User.class,1);

session.getTransaction().commit();
user.setName("crazy grass");

   此时的user状态为脱离状态。

    4.Removed状态

Session session = new Configuration().configure().buildSessionFactory().openSession();

session.beginTransaction();
User user = (User) session.get(User.class,1);
session.delete(user);
session.getTransaction().commit();

   此时的user状态为删除状态。

  •  Session对象的"脏"数据检查

     * Persistent状态的对象受Session的管理,我们对对象的属性值的修改,在Session对象调用close()方法或者Transaction对象执行commit()方法之后,数据库中对应的数据也会跟着同步更新。

Session session = new Configuration().configure().buildSessionFactoy().oepnSession();
session.beginTransaction();
User user = (User)session.get(User.class,1);
user.setName("grass");
user.setAddress("HF");
session.getTransaction().commit();

  在Session没有提交前,user属于持久态。

  • Session接口的核心方法

    1  saveOrUpDate()方法

           判断给的对象是否有主键值,如果有则update,否则就save。

    2  flush()方法

       清除缓存的方法,如果获取session的方法是getCurrentSession,则不需要再了。

  •  不可更改的持久化对象

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

相关推荐