三、Hibernate高级

1、Query查询方式
  SQL,HQL,OID,QBC(query by
criteria)
2、二级缓存
  sessionFactory缓存,也叫进程级的缓存,使用第3方插件实现的,只缓存实体,生命周期和sessionFactory一致
  使用环境:
    经常被访问
    改动不大
    数量有限
    不是很重要的数据,允许出现偶尔并发的数据
  使用方法:(一般用EHCache)
    导入jar包
    在hibernate.cfg.xml文件中
      设置使用二级缓存<property
name="cache.use_second_level_cache">true</property>
      指定缓存策略ehcache
        <property
name="hibernate.cache.provider_class">
          org.hibernate.cache.EhCacheProvider
        </property>
    配置ehcache.xml,定制缓存策略,共需指定5个属性
    选择哪个对象使用二级缓存机制
      在该对象的配置文件*.hbm.xml文件中配置如何使用二级缓存机制:<cache
usage="read-only"
region="sampleCache1"/>
        首先,通过region属性指定要使用的二级缓存;
        其次,通过usage属性指定使用二级缓存的方式
3、查询缓存
  概述:对普通属性进行缓存。如果关联的表发生了修改,那么查询缓存的生命周期也结束了
  使用环境:
    适用于查询结果数据量巨大,查询结果一般不轻易改变的查询(例如商品信息)
  使用方法:
    在hibernate.cfg.xml文件中加入<property
name="hibernate.cache.use_query_cache">ture</property>
    在程序中必须手动启用查询缓存:query.setCacheable(true);
4、锁机制
  悲观锁+乐观锁
  悲观锁:当线程的事务没有结束前,其他事务都要等着
  乐观锁:谁在前,谁先操作
  实现原理:为数据库表增加一个字段version,当用户读取数据时,会将版本号version一同读出,

    如果该用户修改了数据,会先将读取的版本号与数据库中的版本号做比对,

    如果相同,才进行修改,修改完成后,会将版本号version+1
    如果不相同,则不能修改,会抛出异常
  使用方法:
    对象增加version属性
    映射文件*.hbm.xml的class节点增加属性optimistic-lock="lock"
      增加节点<version
name="version" type="integer" column="t_version"/>必须放在id后

三、Hibernate高级,布布扣,bubuko.com

时间: 2024-10-13 05:59:04

三、Hibernate高级的相关文章

一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一

原文:一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(三) --高级设置一 上一篇:一个完整的安装程序实例—艾泽拉斯之海洋女神出品(二) --基本设置二 第二部分:脚本编程 在开始进行编程前,我们先明确一下我们要用编程来弥补前面设置的哪些功能的不足 1. 显示软件许可协议 2. 判断是否安装了本软件所需要的先决软件JKD1.6.0_04,如无,则启动外部安装程序进行安装(同样原理可以用来判断是否安装了其他软件,只要该软件在注册表中有键值) 3. 用户的输入信息.所选安装

[Beego模型] 三、高级查询

[Beego模型] 一.ORM 使用方法 [Beego模型] 二.CRUD 操作 [Beego模型] 三.高级查询 [Beego模型] 四.使用SQL语句进行查询 [Beego模型] 五.构造查询 [Beego模型] 六.事务处理 ORM 以 QuerySeter 来组织查询,每个返回 QuerySeter 的方法都会获得一个新的 QuerySeter 对象. 基本使用方法: o := orm.NewOrm() // 获取 QuerySeter 对象,user 为表名 qs := o.Query

浅谈c#的三个高级参数ref out 和Params

c#的三个高级参数ref out 和Params 前言:在我们学习c#基础的时候,我们会学习到c#的三个高级的参数,分别是out .ref 和Params,在这里我们来分别的讲解一下,在这里的我们先不做具体的解释,我会通过几个例子来做分别的解释. 一:out参数  1.首先我先给大家一个题:我们来写一个方法,来求一个数组中的最大值,最小值,总和,平均值.代码如下:  int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };  通过分析我们会发现如果我们写一个方

三.python高级

三.python高级 1.元类 1.1 Python 中类方法.类实例方法.静态方法有何区别? 类方法:是类对象的方法,在定义时需要在上方使用@classmethod进行装饰,形参为cls,表示类对象,类对象和实例对象都可调用: 类实例方法:是类实例化对象的方法,只有实例对象可以调用,形参为 self,指代对象本身: 静态方法:是一个任意函数,在其上方使用@staticmethod进行装饰,可以用对象直接调用, 静态方法实际上跟该类没有太大关系 2.内存管理与垃圾回收机制 2.1 Python

Hibernate学习笔记(三) — Hibernate 的一级缓存意义

什么是缓存? 缓存说白了,就是应用程序向数据库要数据,然后把一些数据,临时的放在了内存的区域中,第二次再要数据的时候,直接从内存中拿即可. 缓存需要解决的事情: 1.能把数据放入缓存 2.能把数据从缓存中取出来 3.如果缓存中的数据发生变化,需要把数据同步到数据库中 4.把数据库中的数据同步到缓存中 5.hits命中率低的对象应该及时从缓存中移走 分布式缓存: 为什么会有分布式缓存? 应用程序运行在服务器上,并发访问时,服务器压力过大,分布式缓存就是来分担服务器压力的. 分布式缓存之间的数据是同

(十一)Hibernate 高级配置

第一节:配置数据库连接池 反问数据库,需要不断的创建和释放连接,假如访问量大的话,效率比较低级,服务器消耗大: 使用数据库连接池,我们可以根据实际项目的情况,定义连接池的连接个数,从而可以实现从连接池获取连接,用户放回到连接池.从而有效的提高的系统的执行效率: Hibernate 自带的连接池不是很好,有bug: 推荐使用C3P0,proxool 等: C3P0的jar包: 百度云下载:http://pan.baidu.com/s/1jH45002 密码:s391 资料: <!-- 最小连接数

Redis(三)高级应用

(1).Redis数据备份与恢复.Redis SAVE 命令用于创建当前数据库的备份.基本语法就是SAVE 192.168.180.23:6379> save OK 该命令将在 redis 安装目录中创建dump.rdb文件. [[email protected] redis-3.2.9]# ls 00-RELEASENOTES  dump.rdb         redis.conf        src 恢复数据.如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安

DNS(三)高级应用

一.主从复制: 在生产环境中如果企业内部DNS服务器负载过重或者需要备份DNS服务器,从DNS服务器可实现负载均衡的作用: 主DNS服务器宕机,会启用从DNS服务器提供服务, 主服务器DNS长期无应答,从服务器也会停止提供服务:主从区域之间的同步采用周期性检查+通知的机制,从服务器周期性的检查主服务器上的记录情况,一旦发现修改就会同步,另外主服务器上如果有数据被修改了,会立即通知从服务器更新记录: (一).实验前提与环境: 前提: 主从服务器时钟同步: bind版本:二者相同或主低从高: 实验一

Hibernate学习11——Hibernate 高级配置

第一节:配置数据库连接池 这里配置c3p0连接池,需要的jar包: jar包位于hibernate压缩包的:hibernate-release-4.3.5.Final\lib\optional\c3p0 文档中介绍了两种配置方式: 1)在hibernate.properties中配置: 2)在hibernate.cfg.xml中配置: <hibernate-configuration> <session-factory> <!--数据库连接设置 --> <prop