zoukankan      html  css  js  c++  java
  • hibernate对象管理的三种状态


    hibernate的对象三种状态

    临时状态  

    在hibernate没有对对象进行读写等操作上的交集,此时实体类对象处于临时状态。

    例如:

    User u = new User();

    持久状态

            //获取会话对象
            Session session = SessionFactoryUtils.openSession();
            //开启事务
            Transaction trants = session.beginTransaction();
            //懒加载,此时返回的user对象为代理对象,只有oid标识列属性有值,其余部分空值
            User u = session.load(User.class, user.getId());
            //在事务间访问此代理对象除了oid字段的其他属性,将会触发对象初始化操作,为对象赋上完整的字段值
    //        System.out.println(u);
            //启用hibernate的初始化操作
            Hibernate.initialize(u);
            //提交事务
            trants.commit();
            //关闭会话
            SessionFactoryUtils.closeSession();
    //              LazyInitializationException:懒(延迟)加载异常        

    托管状态

     当hibernate执行了事务提交(commit),会话关闭(close),会话重置(clear),清除指定缓存对象(evict)时,对象由持久态转换为托管态(游离态)

    不过仍然可以通过update或save等动作重新切换到持久态,而删除则直接转变为瞬时态。

                  User user = session.get(User.class, 6);
    //            if(null!=user)
    //                session.update(u);
    //                session.merge(u);//可以同时标记相同的持久态对象
    //            提交事务/回滚事务
                  transaction.commit();
    //            关闭Session
                  session.close();
  • 相关阅读:
    python第三方库requests详解
    英语单词Permissive
    Linux系统重要文件(三)
    Linux系统重要文件(二)
    Linux系统重要文件
    操作系统挂载
    Linux系统基础优化
    系统软件安装
    MYSQL二进制安装
    MySQL基本操作
  • 原文地址:https://www.cnblogs.com/StarChen20/p/13567520.html
Copyright © 2011-2022 走看看