博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Java Web]Hibernate基础总结(四)
阅读量:6974 次
发布时间:2019-06-27

本文共 1249 字,大约阅读时间需要 4 分钟。

性能优化

  1. 在大数据量遍历时(比如查找消息敏感词),须要手动使用clear方法释放缓存中的数据,防止缓存中数据过多浪费内存。
  2. 1+N问题:将Fetch设为LAZY能够在须要时才发出sql语句,或者设置BatchSize指定一条sql语句查询多个对象。
  3. list方法会把全部对象都取出,而iterate方法会先取出全部对象的主键,须要时再依据主键取出对象。

    另外iterate会查询二级缓存。list不会。

缓存
  1. Hibernate中的缓存分为一级缓存和二级缓存,缓存能够有效降低查询数据库的次数,提高程序性能。
  2. 一级缓存指的是Session中的缓存,因为Session的生存周期较短所以一级缓存能带来的性能提升非常有限。
  3. 二级缓存指的是SessionFactory中的缓存。能够跨Session存在。

  4. 适合二级缓存数据的特点:常常被訪问、不会常常修改以及数量有限。
  5. 打开缓存的方法:在Hibernate.cfg.xml中设定:
    true
    org.hibernate.cache.EhCacheProvider
    或使用@Cache注解:
    @Cache(usage=CacheConcurrencyStrategy.READ_WRITE) 
  6. load和iterate方法默认使用二级缓存,list会往二级缓存中加入数据,可是不会从二级缓存中查找数据。
  7. 假设须要Query使用二级缓存,须要打开查询缓存:
    true
  8. 常见缓存算法分为LRU(近期最少被使用)、LFU(最不常常使用)和FIFO(先进先出)。

事务并发处理
  1. 事务并发可能出现的问题分为:第一类丢失更新、脏读、不可反复读、第二类丢失更新(不可反复读的特殊情况)、幻读。

  2. 数据库的事务隔离机制:1:read-uncommitted  2:read-committed  4:repeatable read  8:serializable(数字代表相应值)。
  3. 仅仅要支持事务的数据库,就不可能发生第一类更新丢失。
  4. read-uncommitted(同意读取未提交的数据)会发生脏读、不可反复读和幻读。

  5. read-committed(读取已提交的数据)不会出现脏读,仍会出现不可反复读和幻读。
  6. repeatable read (事务运行中其它事务无法运行改动或插入)较安全。
  7. serializable(全部事务顺序运行)很少用。
  8. hibernate.connection.isolation能够设置事务隔离级别,分别相应1、2、4、8(假设不设使用数据库默认的级别)。
  9. 悲观锁:使用select ...for update。或者使用load(class, id, LockMode.Upgrade)。
  10. 乐观锁:使用@Version注解会添加一个字段存放改动次数,事务提交前会对照改动次数是否同样决定是否提交。

转载地址:http://cvesl.baihongyu.com/

你可能感兴趣的文章
「镁客·请讲」1058VR钱朱平:VR泛娱乐的时代未到,不妨从更细分的行业切入
查看>>
Mac休眠之后唤醒时无法使用鼠标
查看>>
《Web Hacking 101》中的链接整理
查看>>
刷新本地的DNS缓存数据
查看>>
AI、量子计算引爆硬科技创新,雷鸣、王海峰、施尧耘等北大120周年论道信科最前沿...
查看>>
逆天了!这个新型穿戴设备除了自愈,还能借由体热获取能量
查看>>
Ant、Gradle、Python三种打包方式的介绍
查看>>
为什么物联网和区块链彼此依赖?
查看>>
Linux查找某个时间点后生成的文件(转)
查看>>
C++:STL常用函数模块总结(算法algorithm)
查看>>
CES Asia专题|从系统到整车,自动驾驶成唯一亮点
查看>>
中国量子技术创造多个世界第一,又创造世界首个
查看>>
pytorch-0.2成功调用GPU:ubuntu16.04,Nvidia驱动安装以及最新cuda9.0与cudnnV7.0配置
查看>>
6Python全站之路系列之Django站点管理
查看>>
bootstrap-进度条--动态条纹进度条
查看>>
事务xmin,xmax
查看>>
日本科学家的AI读心术,解码脑电波,还原人眼所见
查看>>
基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境
查看>>
案例推荐《南京银行: 云上打造FinTech生态圈》
查看>>
ASP.NET实现Cookie功能的三个基本操作(写入,读取,删除)
查看>>