java 编程感悟一---关于数据库连接

作者:和伟

转贴请注名作者和出处     

 通常我们使用java开发项目时,最容易碰到的两个问题:
  一是数据库连接的耗尽
  二为内存的溢出(Memory leak),即常见的OutMemory Error
 
  为什么会造成这两点问题并始终困惑许多开发人员?究其原因,大多数是由于我们程序编写的不规范而引起的,如果我们能够在程序的
编写中尽量的遵循一些基本的规范和原则,相信这些问题都是可以避免的

  我们来看下困惑我们的第一个问题,关于数据库连接耗尽问题
 
  编写面向企业的J2EE程序,我们始终离不开数据库方面的操作,数据库也是同程序员亲密接触的一项重要的工作之一,而在对数据库的
  操作中,我们是通过获取数据库的连接(Connection)来进行数据库操作的,而数据库的连接是非常有限的,这就需要我们在实际的项目
  程序编写中更要谨慎和吝啬(^_^),仔细的去使用这些有效的连接.
  在java中常用的操作数据库连接方法有直接通过JDBC操作数据库,也有通过面向对象的方法进行操作(Hibernate等),接下来我就以这两者
  说明下如何合理、有效的使用这些有限的数据库连接。
 
  通过JDBC直接操作数据库,是我们采用的最广泛的方法,这种方式可以直接的、方便和灵活的嵌入程序中,通过直接操作数据库来取出
  我们所需要的数据,但对于一般的开发者来说,如果在程序的编写中编写的不规范(程序以及SQL的执行效率、连接未及时关闭、多表操
  作时的不恰当引起死锁等), 都可能会在项目的实践中带来隐患和问题
 
  程序的执行效率
  如果一sql语句需要反复在程序中执行,建议使用JDBC中PreparedStatement 代替 Statement,这样做的好处有两点
  1、程序的运行效率会提高,尤其是在预先绑定参数、多次反复执行时会更加明显
  2、避免SQL注射(injection)的攻击
 
  SQL数据库等的优化执行效率
  通常来讲,数据库为提高sql的执行效率,总是会在sql语句执行前进行一些优化操作,但是如果在实际的项目中,如果我们能够自己预先
  对现有的sql语句进行优化操作,将会更加提高sql的执行效率
 
  类似sql优化的一些常用的却是非常有效的建议如下:
  1、适当的建立索引
  2、字段提取要按照"需多少、提多少"的原则,避免"select *"
  3、改善SQL语句,虽然查询优化器可以根据where子句自动的进行查询优化,但是有时查询优化器就会不按照您的本意进行快速查询。
  ...  //有关sql优化方面的技巧,更多可以去查阅相关的sql优化书籍等
 
 
  连接的未及时关闭
   一种最常见的疏忽就是在写完一个Connection连接后忘记使用Connection.close()方法对其关闭了,这种疏忽往往会发生在实践开发
  经验不足的开发人员身上,一种最简单的解决方法就是在条件执行完毕后加上finally语句,并将close()方法增加到其中来防止这种疏忽.
 
  在跳转之前忘记及时关闭连接
   最常见的现象发生在程序在结束或中途需要跳转(Forward或redirection)到另一地方时而忘记关闭连接,而这种现象相对于忘记关闭
  连接更难以排除。 
 
  多表操作时的不规范引起的死锁
   死锁,显而会给我们的项目带来问题,而造成死锁的原因大多数是由于我们程序编写的不合理而引起的,需要说明的是,死锁也是造
  成数据库连接短时间内耗尽的一个原因,尤其是在并发很多条件下。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值