|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。
比拟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
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。 |
|