SSH与SSM学习之hibernate09——对象的三种状态

来源:互联网 发布:女生黄金比例身材算法 编辑:程序博客网 时间:2024/06/05 18:16

  • SSH与SSM学习之hibernate09对象的三种状态
    • 一对象的三种状态
      • 1 瞬时状态
      • 2 持久化状态
      • 3 游离托管状态
    • 二持久化状态对象的任何变化都会自动同步到数据库中
    • 三对象的三种状态转换

SSH与SSM学习之hibernate09——对象的三种状态

一、对象的三种状态

hibernate中,对象拥有三种状态:瞬时状态、持久化状态、游离|托管状态。

1.1 瞬时状态

瞬时状态:没有id,没有在session缓存中。

例如下面的user实例就是 瞬时状态

User user = new User();// 瞬时状态。没有id,没有与session 关联user.setName("xiaoming");// 瞬时状态。没有id,没有与session 关联user.setAge(19);// 瞬时状态。没有id,没有与session 关联

1.2 持久化状态

持久化状态:有id,在session缓存中。

例如下面的user实例就是 瞬时状态

session.save(user);//持久化状态。有id,与session关联

User user = session.get(User.class,1);// 持久化状态。有id,与session关联

1.3 游离|托管状态

游离|托管状态:有id,没有在session缓存中。

例如下面的user实例就是 瞬时状态

User user = new User();// 瞬时状态。没有id,没有与session 关联user.setName("xiaoming");// 瞬时状态。没有id,没有与session 关联user.setAge(19);// 瞬时状态。没有id,没有与session 关联session.save(user);//持久化状态。有id,与session关联//--------------------------------------------//3.提交事务t.commit();//4.关闭资源session.close();//游离|托管状态。有id,没有与session关联

二、持久化状态对象的任何变化都会自动同步到数据库中

例如下面的例子

/*三种状态特点 持久化状态特点: 持久化状态对象的任何变化都会自动同步到数据库中. */@Testpublic void statusDemo3(){    //1.获取Session    Session session = HibernateUtils.openSession();    //2.开启事务    Transaction t = session.beginTransaction();    //-------------------------------------------    User user = session.get(User.class,1);// 持久化状态。有id,与session关联    System.out.println("修改name属性前---"+user);    user.setName("杞文明");//持久化状态。有id,与session关联    user = session.get(User.class,1);// 持久化状态。有id,与session关联    System.out.println("修改name属性后---"+user);    //--------------------------------------------    //3.提交事务    t.commit();    //4.关闭资源    session.close();//游离|托管状态。有id,没有与session关联}

打印结果

修改name属性前---User{id=1, name='xiaoming', age=19}修改name属性后---User{id=1, name='杞文明', age=19}

HibernateUtils.java

package com.qwm.hibernate02;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;/** * @author:qiwenming * @date:2017/9/17 0017   2:39 * @description: * Hibernate工具类 */public class HibernateUtils {    private static SessionFactory factory;    static{        //1 创建,调用空参构造        Configuration conf = new Configuration().configure();        //2 根据配置信息,创建 SessionFactory对象        factory = conf.buildSessionFactory();    }    //获得session => 获得全新session    public static Session openSession(){        //3 获得session        Session session = factory.openSession();        return session;    }    //获得session => 获得与线程绑定的session    public static Session getCurrentSession(){        //3 获得session        Session session = factory.getCurrentSession();        return session;    }}

三、对象的三种状态转换

这里写图片描述

阅读全文
0 0
原创粉丝点击