• 三、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后

  • 相关阅读:
    mysql 性能优化方案
    MYSQL 优化常用方法
    MongoDB集群架构及搭建
    memcache分布式 [一致性hash算法] 的php实现
    memcache 的内存管理介绍和 php实现memcache一致性哈希分布式算法
    【转】linux 查看进程启动路径
    centos7 编译安装nginx+tcp+grpc转发
    mongodb笔记
    【转】mysql 解事务锁
    【转】centos7 搭建etcd集群
  • 原文地址:https://www.cnblogs.com/tombsky/p/3753924.html
Copyright © 2020-2023  润新知