jdbc优化数据库连接

jdbc优化数据库连接

ID:15628821

大小:31.50 KB

页数:4页

时间:2018-08-04

jdbc优化数据库连接_第1页
jdbc优化数据库连接_第2页
jdbc优化数据库连接_第3页
jdbc优化数据库连接_第4页
资源描述:

《jdbc优化数据库连接》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、JDBC优化数据库连接作者:RomanVichr    来自:IBM  企业数据库连接性的恰当构建是非常重要的,并且在为有限连接设备配置(ConnectionLimitedDeviceConfiguration(CLDC))构建应用程序和编写特定于MIDP(移动接口)的接口之间,哪一种是最佳选择取决于J2ME和Java技术。  方式  介绍在把企业数据桥接到无线移动设备时建立JDBC连接的一条简单原则,这可以帮助您使解决方案具有更好的可扩展性和更高效的性能。  连接池  任何应用程序都必须先访问活动的数据库连接,然后才能访问数据库。数据库连接是一个很占资源且I/O开销很大的操作,并且

2、如果每次想使用数据库连接时都必须创建它,那么它将会成为您的性能瓶颈。  例如,如果您使用Javaservlet(Javaservlet通过init()方法创建并在其生命周期结束时被销毁(通过destroy()方法))的方式,您是虽然避免了每次servlet被实例化时重新建立连接。这样一种方式会明显地降低应用程序的性能。完成相同功能的更好的途径是使用“连接池(ConnectionPool)”,您可以在连接池中初始化多个连接(并且参数可以从XML配置文件中读取)。  连接本身由一组集合对象和一个在整个请求过程中使连接保持打开的用户请求组成。创建连接池的关键是在数据库访问代码中使用如下一些

3、块:try{}..catch{}...finally{}..。然后您使用close()方法来确认连接确实被返回到了连接池而不是被彻底关闭了。在“finally{}”块中指定close()方法使得执行过程中发生的异常会被捕获到,并且该语句仍被执行—连接返回到连接池,这就防止了应用程序中“连接泄漏(connectionleak)”的发生。  以下是构建一个JDBC连接的示例:Connectioncon=null;try{ ds=(DataSource)myContext.lookup("");  pooledCon=ds.getConnection(

4、"scott","tiger"); //ProcessingCodegoeshere}catch(Exceptionignored){ //catchJNDIorJDBCexceptionshere}finally{ if(pooledCon!=null)  pooledCon.close();}  使用PreparedStatement  人们认为PreparedStatement对象的效率比多个Statement对象更高,尤其是如果您必须多次执行同一条语句而差别仅在于参数不同时更是如此。PreparedStatement允许您将SQL语句“编译”一次(尽管这种编译第一次要消耗较多

5、的时间),然后将它保存在高速缓存中,从而实现有效的重用。同时它也提供了可读性更好的代码。  另一个额外的优势是由驱动程序完成的对用户传递给语句的字符串的自动转义。举例来说,这意味着当您试图将字符串“D'Marco”插入到一个基于字符的数据域(它可能是VARCHAR,VARCHAR2,CHAR等)中时,SQL语句不会在遇到第一个撇号时就产生灾难性的失败。  使用PreparedStatement对象时的另一个良好习惯是调用对象自身的close()方法来“关闭对象”,这个方法将被用来运行SQL语句。这会关闭任何与正在执行的SQL语句相关联的游标,这样就能防止打开的游标把数据库弄得十分凌乱

6、。  以下是一个创建PreparedSatement的示例:PreparedStatementsqlstmt=dbCon.prepareStatement("select*fromtable1wherefield_1=?");sqlstmt.setInt(1,12);ResultSetrs=sqlstmt.executeQuery();//closetheresultsetstatementtoavoidhangingcursorsindatabasesqlstmt.close();//processingofnewstatementsqlstmt=dbCon.prepareStat

7、ement("select*fromtable2wherefield_2=?");//repeatcreatingtheresultset  恰当地利用事务  在更新动态数据库表和数据时常常会遗忘的一个方面,就是在向超过一个表示一个逻辑事务的表更新或插入数据时,这个事务应该反映到所有的表中,或者在碰到事务失败时,通过“回滚”该事务而在每一个表中都没有反映。  一些核心的JDBC包支持了四种事务隔离模式(transactionisolationmode),这

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。