优化Statement对象

原创 优化Statement对象 收藏

Statement对象是JDBC程序设计中非常重要的对象,它包含了SQL语句的查询与更新的操作,通过Statement对象可以完成对数据库的查询和更新操作,可以这样理解:Statement对象是操作数据库数据的载体。

Statement对象的性能,对程序的处理效率起很大的作用,我们可以通过下面几种途径来调优Statement的性能:
1、选择正确的Statement接口
2、尽可能的做批处理更新
3、采用适当的缓冲数据行技术
4、及时关闭Statement对象

下面,浅析一下如何选择正确的Statement接口。
Statement用于将SQL语句送到数据库中。在JDBC技术规范中,共有三中不同类型的Statement对象,都可以用来执行SQL查询和更新操作。他们分别是:Statement、PreparedStatement(继承自Statement)和CallableStatement(继承自 PreparedStatement)。它们都用于发送特定类型的SQL语句: Statement对象用于不带参数的简单SQL语句;PreparedStatement用于执行带或不带IN参数的预编译SQL语句;CallableStatement用于执行对数据库已存储过程的调用。

Statement接口提供了执行语句和获取结果的基本方法。PreparedStatement接口添加了处理输入(IN)参数的方法,而CallableStatement添加了处理输出(OUT)参数的方法。

通常来讲,PreparedStatement比Statement性能更好,主要体现在一个SQL语句多次重复执行的情况下,PreparedStatement只编译一次而Statement每次编译一次。但当应用要求处理动态SQL语句或有时间限制的命令时,应该尽量使用Statement对象。表面上看来,PreparedStatement对象比Statement对象速度要快。但在实际应用开发中表明,在有时间限制的SQL语句中,除非成批的处理SQL语句,应当考虑使用Statement对象。Statement可以使动态的SQL命令的创建和执行变得比较简单。

但是,如果应用中要求提高数据库的总体效率,采用PreparedStatement,因为PreparedStatement对象执行SQL语句时,命令被数据库进行解析和编译,然后放到命令缓冲区,此后,每当执行一个PreparedStatement对象时,它就会被再解析一次,而不是再编译一次。在大量用户的系统软件中,经常会重复执行相同的SQL语句,使用PreparedStatement对象,系统进行的编译次数比使用Statement的次数少得多,因此,能提高总体的性能。同理,当应用存在成批处理重复的插入或更新操作时,不应该采用Statement对象,应该尽量采用 PreparedStatement对象。

对Statement对象特性与功能的使用,还要依靠JDBC驱动是否支持响应的特性和功能。例如:Oracle提供的Statement和 CallableStatement并不真正的支持批处理,只有PreparedStatement读乡才真正的支持批处理。可以通过使用 addBatch()和excuteBatch()方法选择标准的JDBC执行批处理操作,或者通过利用PreparedStatement对象所提供的 setExcuteBatch()方法和标准的excuteUpdate()方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值