zoukankan      html  css  js  c++  java
  • Hibernate简介2

    一.主配置

    ◆查询缓存,同下面讲的缓存不太一样,它是针对HQL语句的缓存,即完全一样的语句再次执行时可以利用缓存数据。但是,查询缓存在一个交易系统(数据变更频繁,查询条件相同的机率并不大)中可能会起反作用:它会白白耗费大量的系统资源但却难以派上用场。

    ◆fetch_size,同JDBC的相关参数作用类似,参数并不是越大越好,而应根据业务特征去设置

    ◆batch_size同上。

    ◆生产系统中,切记要关掉SQL语句打印。

    二.Hibernate Session缓存

    1.数据库级缓存:这级缓存是最高效和安全的,但不同的数据库可管理的层次并不一样,比如,在ORACLE中,可以在建表时指定将整个表置于缓存当中。

    2.Session缓存:在一个Hibernate Session有效,这级缓存的可干预性不强,大多于Hibernate自动管理,但它提供清除缓存的方法,这在大批量增加/更新操作是有效的。比如,同时增加十万条记录,按常规方式进行,很可能会发现OutofMemeroy的异常,这时可能需要手动清除这一级缓存:Session.evict以及 Session.clear

    3.应用缓存:在一个SessionFACTORY中有效,因此也是优化的重中之重,因此,各类策略也考虑的较多,在将数据放入这一级缓存之前,需要考虑一些前提条件:
    ◆数据不会被第三方修改(比如,是否有另一个应用也在修改这些数据?)
    ◆数据不会太大
    ◆数据不会频繁更新(否则使用CACHE可能适得其反)
    ◆数据会被频繁查询
    ◆数据不是关键数据(如涉及钱,安全等方面的问题)。

    Hibernate Session缓存有几种形式,可以在映射文件中配置:read-only(只读,适用于很少变更的静态数据/历史数据),nonstrict-read- write,read-write(比较普遍的形式,效率一般),transactional(JTA中,且支持的缓存产品较少)

    4.分布式缓存:同3)的配置一样,只是缓存产品的选用不同,在目前的Hibernate中可供选择的不多,oscache, jboss cache,目前的大多数项目,对它们的用于集群的使用(特别是关键交易系统)都持保守态度。在集群环境中,只利用数据库级的缓存是最安全的。

    三.延迟加载
    ◆实体延迟加载:通过使用动态代理实现
    ◆集合延迟加载:通过实现自有的SET/LIST,Hibernate提供了这方面的支持

    鸣谢:http://zhidao.baidu.com/link?url=9gNQZ7QArMeR4jgpHbRPsh6LbAwkQWrPhHExwUp75Cjz6_NG3soS1JtY4sU98PAI3pA6QoMCxO83AJMzfIEera
  • 相关阅读:
    语言基础
    进制转换
    ado属性扩展
    ado数据模型和数据访问类,泛型集合
    完整的修改和删除
    完整的删除
    修改
    类库
    接口
    抽象类
  • 原文地址:https://www.cnblogs.com/wql025/p/4822914.html
Copyright © 2011-2022 走看看