快速业务通道

如何测定JDBC的性能 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
er( realConnection.prepareCall(sql), this, sql); }    public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException { return new CallableStatementWrapper( realConnection.prepareCall(sql, resultSetType, resultSetConcurrency), this, sql); }    public PreparedStatement prepareStatement(String sql) throws SQLException { return new PreparedStatementWrapper( realConnection.prepareStatement(sql), this, sql); }    public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException { return new PreparedStatementWrapper( realConnection.prepareStatement(sql, resultSetType, resultSetConcurrency), this, sql); }

如何测定JDBC的性能(3)

时间:2010-12-18

如上所示,我们需要定义三种Statement封装类,另外,我们还需要为DatabaseMetaData定义一个封装类,该封装类必须是完备的,因为DatabaseMetaData能够返回用来创建DatabaseMetaData的Connection对象,因此我们需要确保Connection对象是经过封装过的,而不是我们没有封装过的Connection对象。

public DatabaseMetaData getMetaData() throws SQLException { return new DatabaseMetaDataWrapper( realConnection.getMetaData(), this); } 封装statement类 Statement、PreparedStatement和CallableStatement这三个statement类的封装类相似: public class StatementWrapper implements Statement { protected Statement realStatement; protected ConnectionWrapper connectionParent;    public StatementWrapper(Statement statement, ConnectionWrapper parent) { realStatement = statement; connectionParent = parent; }    public void cancel() throws SQLException { realStatement.cancel(); }    ...

我选择了将PreparedStatementWrapper实现为StatementWrapper的一个子类,但这并不是必须的。我们可以将PreparedStatement作为Object的一个子类,实现所有的要求的方法,而不是继承Statement类的方法。

public class PreparedStatementWrapper extends StatementWrapper implements PreparedStatement { PreparedStatement realPreparedStatement; String sql; public PreparedStatementWrapper(PreparedStatement statement, ConnectionWrapper parent, String sql) { super(statement, parent); realPreparedStatement = statement; this.sql = sql; }    public void addBatch() throws SQLException { realPreparedStatement.addBatch(); }

同样地,我选择了将CallableStatementWrapper实现为PreparedStatementWrapper的一个子类:

public class CallableStatementWrapper extends PreparedStatementWrapper implements CallableStatement { CallableStatement realCallableStatement; public CallableStatementWrapper(CallableStatement statement, ConnectionWrapper parent, String sql) { super(statement, parent, sql); realCallableStatement = statement; }    public Array getArray(int i) throws SQLException { return new SQLArrayWrapper(realCallableStatement.getArray(i), this, sql); }

这一次,我们并没有写出全部的代码。这些Statement封装类中的一些方法不能被简单地托付。第一,是一个返回Connection对象的方法,我们希望返回ConnectionWrapper对象,当然了,这非常容易作到。下面是StatementWrapper中的方法:

public Connection getConnection() thro

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号