Hibernate优化策略

简介: 1、抓取策略: 当提取一个对象的关联对象时,所要求的策略。  fetch="select"    customer:  lazy="false" 或者  session.get(Customer.class,id)         set(order   lazy="false")       当加载sessin.get(Customer.class)时,会发出两条SQL          

1、抓取策略:

 当提取一个对象的关联对象时,所要求的策略。
 
 fetch="select"
 
 
  customer:  lazy="false" 或者  session.get(Customer.class,id)   
  
   set(order   lazy="false")
   
    当加载sessin.get(Customer.class)时,会发出两条SQL
    
    
  customer:  lazy="true"  或者session.load()
  
   set(order  lazy="true")
   
    当得到customer属性的时候,发出第一条SQL语句
    
    当迭代order集合的时候,发出第二条SQL语句
  
  
  sesssion.createQuery("from Customer where id in(1,2,3,4,5,6,7,8)");  
  
  从customer获取order集合时,将发出9条SQL语句,这个时候的性能是很差的。
  
  这个时候会导致性能的下降。如果要提高性能,必须fetch="select"与batch-size两个属性结合起来使用   batch-size的为一次性抓取数据的次数
  
  
 fetch="join"
 
  customer和set集合的延迟加载将失效,这个时候,只发出一条sql语句
  
 fetch="subselect"
 
   
  sesssion.createQuery("from Customer where id in(1,2,3,4,5,6,7,8)"); 
  
  
  
2、缓存


 一级缓存
 
 
  session级别的缓存
  
   1、session级别的缓存是私有缓存
   
   2、session级别的缓存数据存在于session中
 
   3、session缓存中的内容只有当前线程能够访问
   
   4、什么时候session缓存就不起作用了
   
    1、当session关闭的时候,session的缓存清空了
    2、当执行session.clear方法时,会清空session的所有的缓存中的数据
    3、当执行session.evict(object)时,会清空该对象的缓存的数据
 
 
 
 二级缓存
 
  sessionFactory级别的缓存
  
   1、sessionFactory级别的缓存是共享缓存,数据是共享的数据
   
   2、sessionFactory级别的缓存在什么情况下使用:
   
    1、如果二级缓存中的数据被不断的修改,这样,hibenate的性能会下降
    
   3、二级缓存怎么样起作用:
   
    hibernate的二级缓存是通过导入第三方组件来实现的
    
   4、二级缓存是如何配置的
   
     针对对象的二级缓存
     
     1、在hibenate的配置文件中
     
      <property name="hibernate.cache.use_second_level_cache">
       true
      </property>
      
      <property name="cache.provider_class">
       org.hibernate.cache.EhCacheProvider
      </property>
      
      
     2、ehcache.xml在src的目录下
     
     3、
   
 查询缓存
 
 
  1、在java的配置文件中,开启查询缓存
  
   <property name="cache.use_query_cache">true</property>
   
  2、query.setCacheable(true);
 

目录
相关文章
|
SQL Java 数据库连接
《Hibernate上课笔记》-----class8----Hibernate的检索方式和检索策略
《Hibernate上课笔记》-----class8----Hibernate的检索方式和检索策略
83 0
《Hibernate上课笔记》-----class8----Hibernate的检索方式和检索策略
|
存储 SQL Oracle
Hibernate-05-主键生成策略
Hibernate-05-主键生成策略
Hibernate-05-主键生成策略
|
SQL 缓存 Java
hibernate(八) Hibernate检索策略(类级别,关联级别,批量检索)详解
很多看起来很难的东西其实并不难,关键是看自己是否花费了时间和精力去看,如果一个东西你能看得懂,同样的,别人也能看得懂,体现不出和别人的差距,所以当你觉得自己看了很多书或者学了很多东西的时候,你要想想,你花费的也就那么一点时间,别人花你这么多时间也能够学到你所学到的东西,所以还是要继续努力。既然不是天才,唯有靠勤奋来弥补。
164 0
|
SQL 关系型数据库 数据库
Hibernate-ORM:03.Hibernate主键生成策略
  ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------       此篇博客简单记录五种常用的主键生成策咯:   不同的主键生成策略,生成的sql语句,以及hibernate的操作都是不同的!   3.
1235 0
|
Oracle 关系型数据库 Java
Hibernate主键生成策略及选择
1 .increment:适用于short,int,long作为主键,不是使用数据库自动增长机制 这是hibernate中提供的一种增长机制            在程序运行时,先进行查询:select max(id) from user;                              ...
741 0
|
Java 数据库连接 Spring
【spring boot hibernate】hibernate命名策略spring.jpa.hibernate.naming-strategy不起作用
对于 spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy hibernate命名策略设置之后不起作用的处理方式:http://www.cnblogs.com/sxdcgaq8080/p/7890218.html,查看1.JPA hibernate命名策略即可   现在这里说一下原因,为什么不起作用:   spring.jpa.hibernate.naming-strategy 设置命名策略,是hibernate4的命名策略,对于hibernate5是不起作用的。
3491 0
|
Java 数据库连接
【hibernate】hibernate不同版本的命名策略
  ===================================================hibernate 4命名策略如下================================================= spring.
2617 0
|
Java 数据库连接
【hibernate】主键生成策略使用UUID报出如下警告:org.hibernate.id.UUIDHexGenerator - HHH000409: Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC
主键生成策略使用UUID报出如警告如下: 控制台- 2017-11-24 18:40:14 [restartedMain] WARN org.hibernate.id.UUIDHexGenerator - HHH000409: Using org.
1892 0
|
Java 数据库连接
【hibernate】主键生成策略使用UUID报出如下警告:org.hibernate.id.UUIDHexGenerator - HHH000409: Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC
主键生成策略使用UUID报出如警告如下: 控制台- 2017-11-24 18:40:14 [restartedMain] WARN org.hibernate.id.UUIDHexGenerator - HHH000409: Using org.
2312 0