仓酷云
标题:
来看JDBC优化战略总结
[打印本页]
作者:
若天明
时间:
2015-1-18 11:17
标题:
来看JDBC优化战略总结
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。
比拟Hibernate、iBatis、DBUtils等,实际上JDBC的功能都凌驾它们。JDBC供应更底层更精密的数据会见战略,这是Hibernate等框架所不具有的。
在一些高功能的数据操纵中,越初级的框架越不合适利用。这里是我在开辟中对JDBC利用过程当中一些优化履历总结。
1、选择纯Java的JDBC驱动。
2、利用毗连池--利用一个“池”来办理JDBC毗连,并经心调试池设置的参数,今朝可用的数据库毗连池良多良多。
怎样设置符合的参数呢,必要的是测试,而不是感到。
3、重用Connection--最年夜限制利用每一个数据库毗连,失掉了就不要容易“抛弃”。
偶然候在一个过程当中,会屡次操纵数据库,而仅仅必要一个毗连就够了,没必用一次就猎取一个毗连,用完后封闭大概进池。如许会增添“池”办理的本钱,万万别觉得你用了“池”就能够任意请求和偿还毗连,都是有价值的。假如是一个复杂轮回块中操纵数据库,更应当注重此成绩!
4、重用Statement--关于一些预界说SQL,设置为静态常量,并尽量重用预界说SQL发生的PreparedStatement对象。关于屡次利用一种形式的SQL,利用预界说SQL能够猎取更好的功能。
5、利用批处置SQL。
6、优化了局集ResultSet--查询时分,前往的了局集有分歧的范例,优先选择只读了局集、不成转动的属性。
这里是很简单呈现成绩的中央:
java.sql.ResultSet
static int CLOSE_CURSORS_AT_COMMIT
该常量唆使挪用 Connection.commit 办法时应当封闭 ResultSet 对象。
static int CONCUR_READ_ONLY
该常量唆使不成以更新的 ResultSet 对象的并发形式。
static int CONCUR_UPDATABLE
该常量唆使能够更新的 ResultSet 对象的并发形式。
static int FETCH_FORWARD
该常量唆使将按正向(即从第一个到最初一个)处置了局会合的行。
static int FETCH_REVERSE
该常量唆使将按反向(即从最初一个到第一个)处置了局会合的行处置。
static int FETCH_UNKNOWN
该常量唆使了局会合的行的处置按次未知。
static int HOLD_CURSORS_OVER_COMMIT
该常量唆使挪用 Connection.commit 办法时不该封闭 ResultSet 对象。
static int TYPE_FORWARD_ONLY
该常量唆使指针只能向前挪动的 ResultSet 对象的范例。
static int TYPE_SCROLL_INSENSITIVE
该常量唆使可转动但一般不受其他的变动影响的 ResultSet 对象的范例。
static int TYPE_SCROLL_SENSITIVE
该常量唆使可转动而且一般受其他的变动影响的 ResultSet 对象的范例。
申明下:
了局集分两品种型:只读和可变动,只读的话,更省内存,查询的了局集不克不及变动。假如了局集在查询后,变动了值又要保留,则利用可变动了局集。
了局集的游标也有两品种型:假如没需要让游标自在转动,则选择双方向挪动的游标范例。
关于是不是并发操纵:假如不必要思索线程平安,则选择疏忽并发的了局集范例,不然选择并发平安的范例。
别的,还要把持了局的巨细,几近一切的数据库都有查询纪录条数把持的战略,能够海量数据举行分批处置,一次一批,如许不至于把体系弄逝世。
7、事物优化--假如数据库不撑持事物,就不要写回滚代码,假如不思索事物,就不要办事务的把持。
8、平安优化--办理好你的Connection对象,在非常时分能“进池”大概封闭。因而应当将Connection开释的代码写在非常处置的finally块中。
9、非常处置优化--不要容易吞噬SQLException,关于DAO、Service条理的数据会见,一样平常在DAO中跑出非常,在Service中处置非常。但DAO中也能够处置非常,并做本义抛出,不要任意抛出RuntimeExeption,由于这是JVM抛出的,不必要你能够往抛出,由于RuntimeException常常会招致体系挂起。
10、代码高层优化--在以上的基本上,优化封装你的数据会见体例,尽量让代码简便好保护,假如你还以为功能不可,那就该从全部体系角度思索优化了,好比加上缓存服务器,集群、负载平衡、优化数据库服务器等等,以猎取更好的系能。
出处:http://lavasoft.blog.51cto.com/62575/225828
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。
作者:
冷月葬花魂
时间:
2015-1-20 19:27
是一种为 Internet发展的计算机语言
作者:
活着的死人
时间:
2015-1-29 17:00
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
作者:
变相怪杰
时间:
2015-2-4 20:38
是一种语言,用以产生「小应用程序(Applet(s))
作者:
小女巫
时间:
2015-2-7 18:16
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者:
飘灵儿
时间:
2015-2-11 20:28
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者:
蒙在股里
时间:
2015-2-26 07:22
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者:
乐观
时间:
2015-2-26 14:48
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
作者:
愤怒的大鸟
时间:
2015-3-8 15:37
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者:
若相依
时间:
2015-3-16 03:32
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者:
分手快乐
时间:
2015-3-22 19:11
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2