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

时间: 2024-10-20 22:51:44

Hibernate(六)的相关文章

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

一.Hinbernate中持久化类的关联关系 在数据库中,表表之间是通过外键关联的,在程序中是要转化为持久化类也就是(JAVA Bean)来实例的. 但在Hibernater中持久化的之间的映射关系,不是通外键建立关联,而是通过属性.主要有以下几种 一对一, 一对多(多对一) 多对多 关联方向: 单向关联 双向关联 二.一对多单向关联关系 2.1.建立数据库表 班级表,和学生表,学生生通过班级表中的,班级编号为外键 --班级表 create table grade ( gid number pr

Hibernate六 HQL查询

HQL查询一 介绍1.HQL:Hibernate Query Language,是一种完全面向对象的查询语言.使用Hibernate有多重查询方式可供选择:hibernate的HQL查询,也可以使用条件查询,甚至使用原生的SQL查询语句.Hibernate还提供了一种数据过滤功能,这些都用于删选目标数据.2.查询步骤:(1)获取Hibernate Session对象(2)编写HQL语句(3)以HQL语句为参数,调用Session的createQuery()方法创建查询对象(4)如果HQL语句包含

Hibernate<六> Hibernate的检索策略

一.Hibernate检索策略 1.Hibernate提供了三种检索策略:立即检索策略.延迟检索策略(懒加载机制).迫切左外连接检索策略.Hibernate在3.x以前lazy属性默认为false,Session的get()方法.load()方法默认都使用的是立即检索策略.从3.x以后,lazy属性为true,get()方法使用的是立即检索策略,load()方法默认使用的延迟检索策略. 以前默认的立即检索策略存在两大不足: ①.select语句的数据太多,需要频繁的访问数据库,会影响检索性能.如

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

瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象. 持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交: 持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到). (当对象save后,会将数据持久化,这时obj.set()后再提交事务hibernate会检测到数据的修改. 而如果在save这个对象之前(即

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

序言 写这篇文章之前,自己也查了很多的资料来搞清楚这两者的关系和各自所做的事情,但是百度一搜,大多数博文感觉说的云里雾里,可能博主自己清楚是怎么一回事,但是给一个不懂的人或者一知半解的人看的话,别人也看不懂其中的关系,所以我自己写博文的时候,会尽量用通俗通俗在通俗的语言去描述一个概念,希望能尽自己的力量去帮助你们理解.光看我的是不行的,最关键的是要自己动手去实践一遍,能得出一样的结论,那就说明懂了,在我不懂的时候,我就去自己实现它,一次次尝试,慢慢的就总结出规律了. --WH 一.外键 我为什么

Hibernate常用接口

Hibernate的接口类型 在了解了Hibernate的基本配置,映射文件后,道路已经铺平了.我们继续往前走.接下来,我们应该做的是了解Hibernate常用的接口,对Hibernate的工作方式进一步熟悉,为我们下一步的编码做好充分的准备. ORM是复杂的,可以看看Hibernate发布里的javadoc,100+MB.如果我们单单去阅读它的API,估计一年你才能看完.然而,我们仅仅是使用他,并不需要对它了解的十分完全.我们只需要了解它的常用核心类和接口就行了.就像数据库是非常复杂的,然而我

Hibernate复习(六)检索策略

1.立即检索策略 默认的检索策略. 缺点: select语句的数目太多,需要频繁的访问数据库,会影响检索性能.如果需要查询n个Customer对象,那么必须执行n+1次select查询语句. 这种检索策略没有利用SQL的连接查询功能.利用left join 只需一条sql语句既可以实现N+1次查询的结果.并且可能造成内存空间的浪费. 2.延迟策略 在一对多关联级别中对于<set>元素,应该优先考虑使用延迟检索策略. ? 优点 – 由应用程序决定需要加载哪些对象,可以避免执行多余的select语

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

一.Hibernate缓存简介: Session接口是Hibernate向应用程序提供的操纵数据接口的最主要接口,它提供了基本的保存.更新.删除和加载Java对象的方法. Session具有一个缓存,位于缓存中的对象称为持久化对象,Session能够在某些时间点来同步更新数据库,这一过程即为清理缓存. Hibernate把对象分为4种状态:持久化状态.临时状态.游离状态和删除状态. 二.Session的缓存: Session的缓存由一系列Java集合构成的. 1.Session缓存的作用: A.

Maven的学习资料收集--(六) 构建Hibernate项目

前面我们使用Maven构建了Struts2项目,这里我们来试一下Hibernate项目: 这里的例子,大体框架应该是正确的,但是,对于Maven的很多约定都没有掌握,估计包的命名都不是非常好,等以后,理解深刻了再改吧 1. 构建一个基本的Web项目 这里请参考前面的博客,一样的 2. 添加依赖,修改pom.xml [html] view plaincopy <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&