仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 683|回复: 10
打印 上一主题 下一主题

[学习教程] 发布一篇Hibernate程序功能优化的思索要点

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:23:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。
本文按照HIBERNATE匡助文档,一些收集书本及项目履历收拾而成,只供应要点和思绪,详细做法能够留言切磋,或是找一些更具体更有针对性的材料。
初用HIBERNATE的人大概都碰到过功能成绩,完成统一功效,用HIBERNATE与用JDBC功能相差十几倍很一般,假如不尽早调剂,极可能影响全部项目标进度。
大致上,关于HIBERNATE功能调优的次要思索点以下:
数据库计划调剂
HQL优化
API的准确利用(如依据分歧的营业范例选用分歧的汇合及查询API)
主设置参数(日记,查询缓存,fetch_size,batch_size等)
映照文件优化(ID天生战略,二级缓存,提早加载,联系关系优化)
一级缓存的办理
针对二级缓存,另有很多独有的战略
事件把持战略。
1、数据库计划
a)下降联系关系的庞大性
b)只管不利用团结主键
c)ID的天生机制,分歧的数据库所供应的机制其实不完整一样
d)得当的冗余数据,不外分寻求高范式
2、HQL优化
HQL假如抛开它同HIBERNATE自己一些缓存机制的联系关系,HQL的优化技能同一般的SQL优化技能一样,能够很简单在网上找到一些履历之谈。
3、主设置
a)查询缓存,同上面讲的缓存不太一样,它是针对HQL语句的缓存,即完整一样的语句再次实行时能够使用缓存数据。可是,查询缓存在一个买卖体系(数据变动频仍,查询前提不异的机率其实不年夜)中大概会起反感化:它会白白泯灭大批的体系资本但却难以派上用处。
b)fetch_size,同JDBC的相干参数感化相似,参数并非越年夜越好,而应依据营业特性往设置
c)batch_size同上。
d)临盆体系中,牢记要关失落SQL语句打印。
4、缓存
a)数据库级缓存:这级缓存是最高效和平安的,但分歧的数据库可办理的条理其实不一样,好比,在ORACLE中,能够在建表时指定将全部表置于缓存傍边。
b)SESSION缓存:在一个HIBERNATESESSION无效,这级缓存的可干涉性不强,年夜多于HIBERNATE主动办理,但它供应扫除缓存的办法,这在多量量增添/更新操纵是无效的。好比,同时增添十万笔记录,按惯例体例举行,极可能会发明OutofMemeroy的非常,这时候大概必要手动扫除这一级缓存:Session.evict和Session.clear
c)使用缓存:在一个SESSIONFACTORY中无效,因而也是优化的重中之重,因而,各种战略也思索的较多,在将数据放进这一级缓存之前,必要思索一些条件前提:
i.数据不会被第三方修正(好比,是不是有另外一个使用也在修正这些数据?)
ii.数据不会太年夜
iii.数据不会频仍更新(不然利用CACHE大概拔苗助长)
iv.数据会被频仍查询
v.数据不是关头数据(如触及钱,平安等方面的成绩)。
缓存有几种情势,能够在映照文件中设置:read-only(只读,合用于很少变动的静态数据/汗青数据),nonstrict-read-write,read-write(对照广泛的情势,效力一样平常),transactional(JTA中,且撑持的缓存产物较少)
d)散布式缓存:同c)的设置一样,只是缓存产物的选用分歧,在今朝的HIBERNATE中可供选择的未几,oscache,jbosscache,今朝的年夜多半项目,对它们的用于集群的利用(出格是关头买卖体系)都持守旧立场。在集群情况中,只使用数据库级的缓存是最平安的。
<p>
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。
小女巫 该用户已被删除
沙发
发表于 2015-1-18 18:28:25 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-19 23:51:09 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
admin 该用户已被删除
地板
发表于 2015-1-25 09:52:03 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
莫相离 该用户已被删除
5#
发表于 2015-2-2 20:19:22 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
再现理想 该用户已被删除
6#
 楼主| 发表于 2015-2-6 18:11:57 | 只看该作者
是一种为 Internet发展的计算机语言
深爱那片海 该用户已被删除
7#
发表于 2015-2-18 00:03:58 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-2-23 09:24:04 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
海妖 该用户已被删除
9#
发表于 2015-3-7 06:29:19 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
爱飞 该用户已被删除
10#
发表于 2015-3-11 05:40:05 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
柔情似水 该用户已被删除
11#
发表于 2015-3-17 21:10:55 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 09:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表