hibernate的优化与事务



1 延迟加载


(1)定义:当真正需要数据时才从数据中加载数据,目的就是为了提高执行效率。

  注意:当加载延迟加载的数据时,Session关闭,那么就会出现no session的异常,从而导致延迟加载的数据,无法加载。

(2)延迟加载的分类:
  
  1 实体级别:<class lazy="true|false"> 此只对load方法有效。




  2 集合级别:<set lazy="true|false|extra">


 
    extra:除了具备lazy="true"还根据集合属性的不同发送不同的sql语句。
    其中调用size(),isEmptry();发送的SQL语句如   select  count(*)


  3 单端关联属性:<many-to-many lazy="proxy|no_-proxy|false" >




  4 普通属性<property lazy="true|false">




结论:1 集合级别的延迟加载对程序性能的提升最为明显。


      2 hibernate通过javassit运行时为关联对象所属的类产生代理现象,no_proxy实现延迟加载时,必须在编译时修改字节码。
   
      3 延迟加载在开发中,获取主体时,同时要打印 关联对象的信息,调用连接查询和fetch关键字。


2 抓取策略


 (1)用于定义怎么关联属性
  
   在关联属性的标签中,都有一个fetch属性, 通过fetch指定对象怎么取。


(2)<many-to-many fetch="select|join"> 默认值: select


     <one-to-one fetch="join|select">  默认值:join


如果设置为fetch="join",使用左外连接将主体和关联对象立即加载出来,只对get和load方法,在hql语句需要立即抓取关联属性通过fetch关键字。


    <set fetch="select|subselect|join"> 默认值:select
    
       如果设置为fetch="subselect",如果使用get或者load方法加载主体对象,那么发送查询语句,如果HQL语句查询主体对象,关联对象通过子查询抓取

batch-size : 有效的减少1+n产生的sql语句


3  缓存机制


(1)定义: 用于应用程序维持内存,放置常用的数据 提高缓存读取数据的效率。
 
(2)缓存机制的分类:


    事务级别的缓存:


               适用于经常被不同线程进行删除或者修改操作数据,事务级别的缓存适用于单线程环境
Session级别的缓存 就是事务级别的缓存,或者叫做一级缓存



    应用程序的缓存
 
                不经常修改的通用性数据放置到应用程序级别的缓存中,让多个事务共享这些数据
SessionFactory级别的缓存 就属于应用程序级别的缓存,或者叫做二级缓存




    集群级别的缓存


           集群环境下,不同服务器上的应用程序如果维持自己的缓存,那么就会导致集群中多个服务器之间的缓存数据无法同步,就需要集群级别缓存
集群环境下的缓存服务器程序:redis 


  session.flush();刷新数据,对数据作更新操作,强制将数据作同步


  session.clear();清空数据,不对数据作更新操作。
   


二  二级缓存 


     (1) sessionFactory hibernate中没用默认开启二级缓存




     (2) 二级缓存中只能放置实体对象,而且是那些不经常修改并且经常被多个Session访问的数据应用放置到二级缓存。
        
      (3)如何使用二级缓存
 
         1、选择hibernate支持的第三方缓存实现,


2、配置缓存、并且在hibernate的配置中启用二级缓存


1、将ehcache的配置文件ehcache.xml放置到当前项目的src下


2、在hibernate.cfg.xml中开启二级缓存,并且指定二级缓存的提供商




                 <property name="hibernate.cache.use_second_level_cache">true</property>
   


      <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
        
3、在hibernate映射文件中指定哪些实体需要使用二级缓存,并且指定二级缓存的使用策略




   实体映射文件中加入<cache usage="read-only|read-write"/>

   
4 事物概念
  
(1)定义:把一系列相关的数据操作作为一个逻辑的工作单元,这个逻辑的工作单元叫做事务。


(2)回滚:逻辑工作单元数据操作要么全部成功,只要一个失败,那么整体回滚。


(3)事务特性:ACID


     原子性:事务中所有的数据操作应该作为整体执行,不可以进行分割执行
     
     一致性:事务操作前后,数据库中的数据应该保证一致的 
    
     隔离性:多个事务访问同一个数据时,不能相互影响,也就事务之间相互隔离
   
     持久性:事务执行完毕,对数据的影响应该能够持久的保存下来




 结论: 1 事物的原子性,一致性,持久性通过日志实现的。
        
        2 事务的隔离性通过数据库锁机制实现。
    
(4)事务的并发


       定义:多个事务同时执行,叫做事务的并发。
 
 (5)事务的并发引起的问题:
  
       第一类丢失更新:一个事务把另外一个事务提交的数据回滚
       
       脏读:一个事务读取另外一个事务未提交的数据,脏读和第一丢失更新对数据一致性造成很严重的问题,所以应该尽量避免这两类问题
       
      不可重复读:一个事务读到另一事务已提交的更新数据


      第二类丢失更新:一个事务覆盖另一个已提交的更新。


       幻读:
       


(6)怎么避免并发引起的问题?


    四种隔离级别:读未提交  读已提交 可重复    串行化 



read uncommitted 读未提交 避免第一类丢失更新,但是无法避免脏读、不可重复读、幻读


read committed 读已提交 可以避免第一类丢失更新、脏读、但是不能避免不可重复读、幻读


repeatable 可重复 可以避免第一类丢失更新、脏读、不可重复读、但是不能避免幻读


serializable 串行化 可以避免所有并发引起问题




事务的隔离级别越高事务并发性能越差   设置一个合理隔离级别,避免严重的并发问题,如read committed,




数据并发要求更高,可以采用锁对要求高的数据进行加锁,从而避免并发引起的问题。




结论:       在hbernate中通过配置文件制定事务级别  如read  committed
        
               <hibernate.connection.islation="2">


             在jdbc操作数据库,也可以指定当前连接的事务隔离级别


     Connection.setTransacationIslotion(int level)



5 悲观锁和乐观锁


    在hbernate中支持两种锁的使用:


    (1)悲观锁
       
     注意在长事务中,会影响其他事物的性能,严重会死锁




          当一个事务获取悲观锁时,其他事务不能对这个数据作任何操作,当事务释放时,才能对事务进行操作。


         悲观锁由底层数据库实现,需要数据库select  from   for update
      
   (2)乐观锁


             乐观锁不是由底层数据库实现的,是由hibernate进行实现的,


在数据库中增加一个版本控制列 


假设emp中增加一个列version 保存增加和修改时的版本信息,增加版本值为0,每修改一次,版本值就在原来基础上增加1


   
      
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值