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

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

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

分类:
    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.书写配置文件

Hibernate(六)的更多相关文章

  1. Hibernate(六)一对多映射(多对一)

    一.Hinbernate中持久化类的关联关系 在数据库中,表表之间是通过外键关联的,在程序中是要转化为持久化类也就是(JAVA Bean)来实例的. 但在Hibernater中持久化的之间的映射关系, ...

  2. hibernate(六) cascade(级联)和inverse关系详解

    序言 写这篇文章之前,自己也查了很多的资料来搞清楚这两者的关系和各自所做的事情,但是百度一搜,大多数博文感觉说的云里雾里,可能博主自己清楚是怎么一回事,但是给一个不懂的人或者一知半解的人看的话,别人也 ...

  3. Hibernate(六)__对象的三种状态

    瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象. 持久(persistent):数据库中有数据与之对应,当前 ...

  4. Hibernate(六)--缓存策略

    缓存: 缓存就是数据库数据在内存中的临时容器,包括数据库数据在内存中的临时拷贝,它位于数据库与数据库访问中间层,ORM在查询数据时,首先会根据自身的缓存管理策略,在缓存中查找相关数据,如果发现所需的数 ...

  5. Hibernate常用接口

    Hibernate的接口类型 在了解了Hibernate的基本配置,映射文件后,道路已经铺平了.我们继续往前走.接下来,我们应该做的是了解Hibernate常用的接口,对Hibernate的工作方式进 ...

  6. 22Java之JDBCTemplate总结

    写在前面:这里总结4种方式来操作数据库(SE阶段) 一.JDBC         JDBC有关的类:都在java.sql 和 javax.sql 包下.   1.数据准备               ...

  7. 攻城狮在路上(壹) Hibernate(十六)--- Hibernate声明数据库事务

    一.数据库事务的概念: 数据库的ACID特征:Atomic.Consistency.Isolation.Durability.原子性.一致性.隔离性.持久性.不同的隔离级别引发的不同问题. 事务的AC ...

  8. 攻城狮在路上(壹) Hibernate(六)--- 通过Hibernate操纵对象(上)

    一.Hibernate缓存简介: Session接口是Hibernate向应用程序提供的操纵数据接口的最主要接口,它提供了基本的保存.更新.删除和加载Java对象的方法. Session具有一个缓存, ...

  9. HIbernate学习笔记(六) 关系映射之多对多

    六.多对多 - 单向 Ø        一般的设计中,多对多关联映射,需要一个中间表 Ø        Hibernate会自动生成中间表 Ø        Hibernate使用many-to-ma ...

随机推荐

  1. Mysql库、表、记录的基本操作

    库的操作 ---> 类似于文件夹 - 增: 创建数据库: create database db1; 创建带字符集的数据库: create database db2 charset=utf8; - ...

  2. Kafka 集群在马蜂窝大数据平台的优化与应用扩展

    马蜂窝技术原创文章,更多干货请订阅公众号:mfwtech Kafka 是当下热门的消息队列中间件,它可以实时地处理海量数据,具备高吞吐.低延时等特性及可靠的消息异步传递机制,可以很好地解决不同系统间数 ...

  3. 跟我一起学QT_QT标准对话框_字体选择框

    标准对话框 QT的标准对话框分为以下几种 颜色对话框 文件对话框 字体对话框 输入对话框 消息对话框 进度对话框 错误信息对话框 向导对话框 字体选择框 字体选择框位于 QFontDialog 类中 ...

  4. < python音频库:Windows下pydub安装配置、过程出现的问题及常用API >

    < python音频库:Windows下pydub安装配置.过程出现的问题及常用API > 背景 刚从B站上看过倒放挑战之后也想体验下,心血来潮一个晚上完成了基本的实现.其中倒放与播放部分 ...

  5. 小小知识点(十五)——origin pro 2018 安装和消除demo字样

    安装 1.安装过成中选择语言为中文或者英文,安装完成后可在注册表中切换语言. 2.安装过程中使用序列号 中文版:DF2W8-9089-7991320英文版:GF3S4-9089-7991320 3.安 ...

  6. AspectJ——预编译方式实现AOP

  7. socket、http、udp、tcp的整理

    1.socket简介 游戏开发中最常用的便是socket,socket本质是api,是对tcp/ip的封装.tcp/ip协议族是一个网络通信模型以及一系列网络传输协议,为互联网的基础通信架构. tcp ...

  8. The command '/bin/sh -c unzip -o php-7.2.23-src.zip' returned a non-zero code: 1

    Dockerfile 内容 #centos7 nginx php redis inotify FROM centos:7 MAINTAINER INFOBIRD RUN yum -y update & ...

  9. Shell水平测试-想学习Shell的童鞋必选必看文章

    [SHELL水平测试] [OVERVIEW 篇] 有很多种 shell, 你熟悉几种? 各个 shell 的 home page 在那里? 为什么说 zsh 是目前为止功能最为强大的 shell. 为 ...

  10. python的list()函数

    list()函数将其它序列转换为 列表 (就是js的数组). 该函数不会改变   其它序列 效果图一: 代码一: # 定义一个元组序列 tuple_one = (123,','abc') print( ...