1.一级缓存(session缓存 )、二级缓存
 
   意义:提高hibernate查询效率。
   缺点:可能会因并发,产生数据不一致。
 
   本质:基于session 的缓存,利用hiberate执行查询的时候,hibernate会首先从session缓存去找,如果存在,则直接返回,如果不存在,则利用orm执行查询  将得到的对象保存至session缓存。
 
   可以使用session.evict(obj);将obj从session缓存移除。
 
   注意:一级缓存,自动开启着的。
 
public class Text1{
     public static void main(String[] args){
         //创建SessionFactory
          SessionFavtory sessionFactory = null;
         //创建Session
          Session session  = null;
          //事务
          Transaction tx = null;
          try{
               sessionFactory = new Configuration.configure().buildSessionFactory();
               session = sessionFactory.getCurrentSession();
               //开启事务
               tx = sesison.beginTransaction();
               UserInfo u1 = new UserInfo("9989","sd","23");
               system.out.priint("-----------");
               session.evict(u1);
               UserInfo u2 = new UserInfo("9989","sd","23");
 
               //执行U对象 操作 保存
               Session.save(u);
                //提交
               tx.commit();
          }catch(Exception e){
               e.printStackTrace();
               //事务回滚
               tx.rollback();
          }
     }
}
 
二级缓存 :也叫 sessionFactory缓存。
 
   本质: 基于sessionFactory的缓存,利用hiberate执行查询的时候,hibernate会首先从session缓存去找,如果存在,则直接返回,如果不存在,则去二级缓存找,存在则返回,不存利用orm执行查询  将得到的对象保存至session缓存,可以存至二级缓存。
 
   注意:二级缓存需要在sessionFactory配置文件中,进行两处配置。
  (a.配置启用二级缓存)
  (b.配置二级缓存实现类)
    需要对缓存本身进行专门配置。
  (xxx.xml--配置缓存)
 
   适用场合:频繁查询,极少修改的对象。
 
2.延迟加载
 
  hibernate下延迟加载:
  load执行查询的时候,返回hiberate代理对象。
 
   当操作其非主属性的时候(Hibernate.initialize(proxy)),才会利用orm执行查询。   
 
  load/get 区别?
 
   load:  默认  延迟加载  
   查不到: 抛出异常      
   get: 即可加载
   查不到: 返回null
 
public class Text1{
     public static void main(String[] args){
         //创建SessionFactory
          SessionFavtory sessionFactory = null;
         //创建Session
          Session session  = null;
          //事务
          Transaction tx = null;
          try{
               sessionFactory = new Configuration.configure().buildSessionFactory();
               session = sessionFactory.getCurrentSession();
               //开启事务
               tx = sesison.beginTransaction();
               UserInfo u1 = (UserInfo)session.load(UserInfo.class,"1001");
               system.out.print("-----------");
               system.out.print(u1.getUse_pwd;    
                Hibernate.initilize(u1);        
                //提交
               tx.commit();
          }catch(Exception e){
               e.printStackTrace();
               //事务回滚
               tx.rollback();
          }
     }
}
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.it.bean">
    <class name="UserInfo" table="userInfo" lazy="true">    <!--是(true)否(false)延迟加载-->
        <id name="user_id" column="user_id">
            <!-- 主键生成策略 -->
            <generator class="assigned"></generator>
        </id>
        <property name="user_pwd" column="user_pwd"></property>
        <property name="user_sex" column="user_sex"></property>
 
 
3.hibernate 、session域 、pojo(java Bean的对象)三种状态
 
  研究的session 域 /数据库 (oid-pk) 与 pojo 关系
 
  瞬时态(临时态):数据库无 session无
 
  持久态: session域 有 save/saveOrupdate/get/load/....
               对持久态pojo操作,在事务提交前将会被 hibernate  利用 orm  同步到数据库。
 
  脱管态(游离态): 数据库存在,而session 无
 
  注意:session中不能有两个不同的对象,拥有一样的oid。
            delete-(脱管态)-->持久态--->瞬时态
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

一级缓存、二级缓存、延迟加载、hibernate session 域 pojo三种状态的更多相关文章

  1. Hibernate中对象的三种状态以及Session类中saveOrUpdate方法与merge方法的区别

    首先,用一张图说明一个对象,在Hibernate中,在调用了不同方法之后对象所处的不同状态 在Hibernate中,一个对象的状态可以被分为如图所示的三种 Transient:瞬时对象,该对象在数据库 ...

  2. Hibernate持久化对象的三种状态深入理解

    关于OID hibernate缓存是一个map,他会根据OID作为缓存对象的key,我们的映射文件中<id>标签指定的属性值会作为OID 持久化对象的三种状态 为了方便理解,Hiberna ...

  3. 【SSH系列】-- Hibernate持久化对象的三种状态

    在上一篇博文中,小编主要简单的介绍了[SSH系列]--hibernate基本原理&&入门demo,今天小编来继续介绍hibernate的相关知识, 大家知道,Java对象的生命周期,是 ...

  4. Hibernate中对象的三种状态即save(),update(),saveOrUpdate()的使用【转】

    当new一个user的时候,是处于瞬时状态 当调用session.save(user)的时候,user对象会放到session里,此时处于持久状态 当提交事务的时候,user对象才会存到DB中 当调用 ...

  5. Hibernate之对象的三种状态

    Hibernate之Java对象的三种状态 一.简述 本博文大部分的思想和内容引子CSND上名为 FG2006 这位大神的文章,连接地址为:http://blog.csdn.net/fg2006/ar ...

  6. Hibernate中对象的三种状态及相互转化

    1. 瞬时状态 (Transient) 当我们通过Java的new关键字来生成一个实体对象时,这时这个实体对象就处于自由状态,如下:  Customer customer=new Customer(“ ...

  7. hibernate 实体对象的三种状态以及转换关系。

    最新的Hibernate文档中为Hibernate对象定义了四种状态(原来是三种状态,面试的时候基本上问的也是三种状态),分别是:瞬时态(new, or transient).持久态(managed, ...

  8. JavaWeb_(Hibernate框架)Hibernate中对象的三种状态

    对象的三种状态 瞬时状态: 实体 没有id.没有与session关联 持久化状态: 特点:持久化状态对象的任何改变都会同步到数据库中 游离态[也称作托管态]: 实体 有id,没有与session关联 ...

  9. Hibernate对象持久化的三种状态

    1.三种状态: public static void testSel() { Session session = HibernateUtils.openSession(); Transaction t ...

随机推荐

  1. Docker - Docker基础命令及使用

    Docker Docker - 官网 Docker - Hub GitHub - Docker Docker中文社区 Docker基础命令 Docker 查看帮助信息:docker --help 查看 ...

  2. react路由深度解析

    先看一段代码能否秒懂很重要 这是app.js  全局js的入口 import React from 'react' import { render } from 'react-dom' import ...

  3. 编写Chrome扩展程序

    Chrome的扩展程序很多,也很容易入门,可以来简单实现一下 看看,慢慢就能实现出一个扩展程序来 每个扩展程序应用一般会包含: 一个manifest清单文件 html文件 js文件 其他文件等 可以看 ...

  4. a configuration error occurred during startup. place verify the preference field whth the prompt:TomcatJDK name:

    错误一:安装Tomcat的时候出现了错误,这里要是找不到Tomcat6.0我们可以设置其enbale显示就可以,上面的错误解决办法: 错误二:在eclipse中启动Tomcat6.0的时候现在说800 ...

  5. Linux - 修复Ubuntu错误“System program problem detected”

    The error "System program problem detected" comes up when a certain application crashes. U ...

  6. js 模板引擎 为什么选择 dot

    我的上篇博文详细介绍了jquery tmpl,因为我想在我的项目里引入JS模版,所以就研究了一下,有人告诉我这个引擎的速度很慢,于是我又去搜集了一下资料,结果发现jquery tmpl是最慢的,于是乎 ...

  7. Expression<Func<TObject, bool>>与Func<TObject, bool>的区别

    Func<TObject, bool>是委托(delegate) Expression<Func<TObject, bool>>是表达式 Expression编译后 ...

  8. 在Excel中使用频率最高的函数的功能和使用方法

    在Excel中使用频率最高的函数的功能和使用方法,按字母排序: 1.ABS函数 函数名称:ABS 主要功能:求出相应数字的绝对值. 使用格式:ABS(number) 参数说明:number代表需要求绝 ...

  9. jquery内容选择器(根据内容匹配元素)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. 对状态空间图搜索的几种算法比较(图)【深度、宽度、动态规划(均一代价)、最佳优先和A*算法】

    ---------------------------------------------------------------------------------------------------- ...