Hibernate(六)

================================缓存============================
定义:介于应用程序和永久性数据存储源之间,可以复制数据存储源中的数据。

工作原理:应用程序在运行时直接读/写缓存,只在某些特定时刻按照缓存中的数据来同步更新数据存储源即可。

作用:降低直接读写永久性数据存储源的频率;提高运行性能


分类:
    1.一级缓存
    2.二级缓存
    3.查询缓存
    
作用范围:
    1.事务范围
    2.进程范围
    3.集群范围
    
一级缓存:Session缓存
    save()、update()、saveOrUpdate()会将对象加入一级缓存中,如果已存在该对象,就会抛出异常
    load()、get()、(Query)list()、(Query)iterator(),缓存中不存在的对象加进缓存中
    
    作用:
        1.减少访问数据库的频率
        2.保证数据库中的相关记录与缓存中的相应对象保持同步
        
    清理缓存的时间点:
        1.调用事务的commit()方法时,会先清理缓存,在向数据库提交事务
        2.执行一些查询操作,缓存中的持久化对象的属性发生变化
        3.显式调用Session的flush()方法
    
    管理缓存的方法:
        1.evict(Object o):从缓存中清除特定持久化对象
        2.clear():清空缓存中所有的持久化对象

二级缓存:SeesionFactory外置缓存,(进程或者集群范围内的缓存,可以被所有的Session共享)
    SeesionFactory缓存分为内置缓存和外置缓存。
        内置缓存是hibernate自带,不可拆卸,是只读,用来存放映射元数据和预定义SQL语句
        外置缓存是一个可配置的缓存插件,默认SeesionFactory不会启用这个缓存插件。外置缓存中的数据是数据库数据的复制
        
    可配置的插件
        缓存插件        缓存实现类                                是否支持查询缓存        类型
        EHCache        org.hibernate.cache.EhCacheProvider                是                    进程范围;内存或硬盘
        OSCache        org.hibernate.cache.OSCacheProvider                是                    进程范围;内存或硬盘
        SwarmCache    org.hibernate.cache.SwarmCacheProvider            否                    集群范围
        JBossCache    org.hibernate.cache.TreeCacheProvider            是                    集群范围
    
    配置二级缓存的步骤:
        1.将oscache-2.1.jar包放入项目
        2.将配置文件oscache.properties放入项目根目录下
        3.配置hibernate.xml

查询缓存:依赖二级缓存
    针对ID查询的缓存,对于条件查询毫无作用
    作用:
        1.提高查询速度
        2.优化查询性能
        
================================连接池============================
配置:
    1.使用hibernate时,默认采用hibernate内建的连接池(性能缺陷)
    2.c3p0连接池(推荐)
    
c3p0配置:
    1.导入jar包 c3p0-0.9.1.jar
    2.书写配置文件






















原文地址:https://www.cnblogs.com/ivy-xu/p/5618261.html