1、性能是与具体的项目挂钩的,并不是对于A项目某种优化方法好就适用于B项目、性能需要不断的测试检验出来的.....(废话)

2、session.clear()方法的使用,通常session是有缓存的 在一个session不关闭时 不断的取数据,数据会不断的往缓存里面添加,到达一定程度时出现内存溢出的情况,

  这也是由于程序逻辑不当造成的一种内存泄露问题,在使用同一个session取数据的时候最好使用session.clear清除一下数据在取,防止内存泄露

3、hibernate的list和iterate方法的区别:list方法每次都会去数据库取,iterate 首次会取出每条记录的主键,用到的时候会按照主键去数据库中取出

4、1+N问题:在一对多关联问题上 我想取出所有多的方的数据 不需要取出一方数据 ,因为默认是eager,所以会触发1+N问题,现在有三种方法解决

  1> fetchType.lazy

  2>batchSize(size)(不正规)

  3>left join fetch

5、二级缓存sessionfactory

  1>配置hibernate.cfg.xml ssh整合的话可以在applicationContext.xml中配置

  <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
p:dataSource-ref="dataSource" p:mappingLocations="classpath*:/com/**/*.hbm.xml">
<property name="packagesToScan">
<list>
<value>com/</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.EhCacheRegionFactory</prop>

</props>
</property>
</bean>

2>引入jar包ehcache-2.8.3.jar    ehcache-core-2.4.3.jar  ehcache-web-2.0.4.jar

 3>引入xml文件 ehcache.xml

4>使用  注解方式 @Cache(usage=CacheConcurrencyStrategy.READ_WRITE)

Hibernate性能优化的更多相关文章

  1. Hibernate性能优化之EHCache缓存

    像Hibernate这种ORM框架,相较于JDBC操作,需要有更复杂的机制来实现映射.对象状态管理等,因此在性能和效率上有一定的损耗. 在保证避免映射产生低效的SQL操作外,缓存是提升Hibernat ...

  2. 8.Hibernate性能优化

    性能优化 1.注意session.clear() 的运用,尤其在不断分页的时候 a) 在一个大集合中进行遍历,遍历msg,取出其中额含有敏感字样的对象 b) 另外一种形式的内存泄漏( //面试题:Ja ...

  3. Hibernate性能优化之SessionFactory重用

    Hibernate优化的方式有很多,如缓存.延迟加载以及与SQL合理映射,通过对SessionFactory使用的优化是最基础的. SessionFactory负责创建Session实例,Sessio ...

  4. 第七章 Hibernate性能优化

    一对一关联 实体类关系 一对多 多对多 一对一 Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射.下面以员工账号和员工档案表为例,介绍这两种映射方式,并使用这两种映射方 ...

  5. Hibernate 性能优化一对一关联映射

    概述: hibernate提供了两种映射一对一关联的方式:按照外键映射和按照主键映射. 下面以员工账号和员工档案为例 ,介绍两种映射方式,并使用这两种映射方式分别完成以下持久化操作: (1)保存员工档 ...

  6. Hibernate 性能优化之一级缓存

     1.一级缓存的生命周期     一级缓存在session中存放,只要打开session,一级缓存就存在了,当session关闭的时候,一级缓存就不存在了   2.一级缓存是依赖于谁存在的      ...

  7. 关于Hibernate性能优化之 FetchType=Lazy时查询数据

    当表A和表B一对多的关系 对于A和B的实体类,设置FetchType=EAGER时,取A表数据,对应B表的数据都会跟着一起加载,优点不用进行二次查询.缺点是严重影响数据查询的访问时间. 解决办法Fet ...

  8. hibernate 性能优化之 1+N 问题

    1. 注意 session.clear()的运用,尤其在不断分页查询的时候 a) 在一个大集合中进行遍历,遍历 msg,去除其中的含有敏感字样的对象 b) 另外一种形式的内存泄漏 面试题:Java 有 ...

  9. Hibernate 性能优化之查询缓存

    查询缓存是建立在二级缓存基础之上的,所以与二级缓存特性相似,是共享的,适合修改不是很频繁的数据 查询缓存不是默认开启的,需要设置      1.在cfg文件中配置 <property name= ...

随机推荐

  1. Educational Codeforces Round 35 B. Two Cakes【枚举/给盘子个数,两份蛋糕块数,最少需要在每个盘子放几块蛋糕保证所有蛋糕块都装下】

    B. Two Cakes time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  2. BZOJ——3412: [Usaco2009 Dec]Music Notes乐谱

    http://www.lydsy.com/JudgeOnline/problem.php?id=3412 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit:  ...

  3. 使用OPENROWSET爆破SQL Server密码

    使用OPENROWSET爆破SQL Server密码   OPENROWSET函数是SQL Server提供的一个连接函数.它可以用于使用OLE DB方式连接一个数据库,并进行数据查询等操作.使用该函 ...

  4. An Introduction to Reflection in C++

    Apr 13, 2017 Stop me if you’ve heard this one before. You are working on a messaging middleware, a g ...

  5. f5压缩

    F5应用加速 编辑 F5在4个方面对Web应用提速: 一降低网络传输的压力,最典型技术是压缩 F5的加速技术把100K的页面压缩到20K在广域网上传输,一些标准的浏览器如IE.火狐可以自动解压,这一过 ...

  6. mybatis配置mapperLocations多个路径

    <property name="mapperLocations"> <array> <value>classpath*:/mybatis-con ...

  7. HTML5 Canvas 绘制星条旗

    代码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Type ...

  8. AngularJS的过滤器示例

    代码下载:https://files.cnblogs.com/files/xiandedanteng/angularJSFilter.rar 显示效果: 页面代码: <!DOCTYPE HTML ...

  9. PGM图片格式与代码

    这两天在搞神经网络,里面的一个人脸数据库的图片格式是PGM,事实上之前早就知道了这个图片格式,可是没去深究这个图片格式的数据究竟是什么安排的.搜索了下百度百科,发现介绍的真是简单,以下就自己来系统地整 ...

  10. An internal error occurred Exception caught during execution of commit command

    在工程目录下找到 .git 文件夹 ,找到里面的 index.lock 文件,删掉再commit