使用hibernate可以优化的地方】的更多相关文章

a.  在查询字符串中,应该总是使用jdbc的占位符?,或使用使用命名参数:,不要自查询中使用字符串值来代替非常量值. b.  Flush会影响性能,频繁刷新影响性能,尽量减少不必要的刷新. c.  Cascade策略,在几对几的关系,正确设置cascade策略,想清楚在操作对象A的同时是否需要级联操作对象B,比如在one to many的父子关系中,删除了父亲one,需级联删除子many,这时的one这端可设置cascade = “delete”,这样在删除one时,会自动删除子,但对子的操作…
像Hibernate这种ORM框架,相较于JDBC操作,需要有更复杂的机制来实现映射.对象状态管理等,因此在性能和效率上有一定的损耗. 在保证避免映射产生低效的SQL操作外,缓存是提升Hibernate的关键之一. 加入缓存可以避免数据库调用带来的连接创建与销毁.数据打包拆包.SQL执行.网络传输,良好的缓存机制和合理的缓存模式能带来性能的极大提升,EHCache就提供了这种良好的缓存机制. 在考虑给系统加入缓存进行优化前,复用SessionFactory是Hibernate优化最优先.最基础的…
最近在负责一个大项目,项目组成员包括项目经理大概10个人左右.项目技术用struts+spring+hibernate实现.项目的规模相对来说是比较大的,总共有10大模块,每个大模块又分为有十几个.甚至几十个小模块.开发工具用eclipse,由于在开发阶段,项目开发成员需要频繁重启服务器.在启动服务器的时候,每次启动时间总是会超过1分钟.记得以前在做另外一个项目时,启动时间不到5秒钟,相差了10倍,而且项目规模是差不多的. 从初步分析来说,应该是hibernate解释hbm.xml时花费时间,或…
最近正在拜读Hibernate之父大作<Java Persistence with Hibernate>,颇有收获.在我们熟悉的Hibernate映射文件中也大有乾坤,很多值得我注意的地方.在Hibernate的映射文件的class tag使用dynamic-insert,dynamic-update,可以优化生成的SQL语句,提高SQL执行效率,最终可以提高系统性能.如,有一个User类.   public class User { /** Creates a new instance of…
Hibernate优化的方式有很多,如缓存.延迟加载以及与SQL合理映射,通过对SessionFactory使用的优化是最基础的. SessionFactory负责创建Session实例,Session相当于JDBC里的Connection. SessionFactory的创建 SessionFactory是通过Configuration来构建的,Configuration会根据配置信息来构建SessionFactory. SessionFactory中保存了对应当前数据库配置的所有映射关系,还…
一.查询方法中get方法采用策略是立即检索,而load方法采用策略是延迟检索,延迟检索是在使用数据时才发送SQL语句加载数据 获取延迟加载数据方式:1.使用的时候,如果Customer c=session.load(Customer.class,1);//加载id为1的客户,此时是延迟加载,返回的是代理对象,当使用的时候加载数据,如c.getName(); 2.调用Hibernate.initialize(c);方法,初始化对象,也可加载到数据 二.类级别检索策略 包括立即检索和延迟检索,即使用…
① 制定合理的缓存策略(二级缓存.查询缓存). ② 采用合理的Session管理机制. ③ 尽量使用延迟加载特性. ④ 设定合理的批处理参数. ⑤ 如果可以,选用UUID作为主键生成器. ⑥ 如果可以,选用基于版本号的乐观锁替代悲观锁. ⑦ 在开发过程中, 开启hibernate.show_sql选项查看生成的SQL,从而了解底层的状况:开发完成后关闭此选项. ⑧ 考虑数据库本身的优化,合理的索引.恰当的数据分区策略等都会对持久层的性能带来可观的提升,但这些需要专业的DBA(数据库管理员)提供支…
使用参数绑定 使用绑定参数的原因是让数据库一次解析SQL,对后续的重复请求可以使用生成好的执行计划,这样做节省CPU时间和内存. 避免SQL注入. 尽量少使用NOT 如果where子句中包含not关键字,那么执行时该字段的索引失效. 尽量使用where来替换having having在检索出所有记录后才对结果集进行过滤,这个处理需要一定的开销,而where子句限制记录的数目,能减少这方面的开销. 减少对表的查询 在含有子查询的HQL中,尽量减少对表的查询,降低开销. 使用表的别名 当在HQL语句…
1.性能是与具体的项目挂钩的,并不是对于A项目某种优化方法好就适用于B项目.性能需要不断的测试检验出来的.....(废话) 2.session.clear()方法的使用,通常session是有缓存的 在一个session不关闭时 不断的取数据,数据会不断的往缓存里面添加,到达一定程度时出现内存溢出的情况, 这也是由于程序逻辑不当造成的一种内存泄露问题,在使用同一个session取数据的时候最好使用session.clear清除一下数据在取,防止内存泄露 3.hibernate的list和iter…
http://blog.csdn.net/yerenyuan_pku/article/details/70768603 HQL优化 使用参数绑定  使用绑定参数的原因是让数据库一次解析SQL,对后续的重复请求可以使用生成好的执行计划,这样做节省CPU时间和内存. 避免SQL注入. 尽量少使用NOT 如果where子句中包含not关键字,那么执行时该字段的索引失效. 尽量使用where来替换having having在检索出所有记录后才对结果集进行过滤,这个处理需要一定的开销,而where子句限制…