【问题标题】:OracleCallableStatement V/S CallableStatementOracleCallableStatement V/S CallableStatement
【发布时间】:2012-02-26 16:51:26
【问题描述】:

我只是想知道 OracleCallableStatement 和 CallableStatement 在性能和有效性方面的区别。

【问题讨论】:

    标签: java oracle stored-procedures jdbc


    【解决方案1】:

    OracleCallableStatement 是一个特定于 Oracle 的接口,它最终扩展了标准的java.sql.CallableStatement 接口。

    除非您需要访问该接口中特定于 Oracle 的功能,否则您不应在代码中引用它,而应仅针对 CallableStatement 接口编写代码。这是所有 JDBC 代码的一般良好做法,并且可以使您的应用程序在驱动程序和数据库之间保持可移植性。

    没有性能或有效性差异 - 你实际上使用的是相同的东西。

    【讨论】:

    • 当然,这仅适用于您关心可移植性的情况。如果您想使用 Oracle 特定的扩展怎么办?
    • @cagcowboy:您应该始终关心可移植性。如果 Oracle 重写其驱动程序并更改该接口会怎样?
    • 不,OCS 也是一个接口。如果您需要使用匿名 PL/SQL 块...您可以使用 OCS,否则只需使用 CS
    【解决方案2】:

    OracleCallableStatement 扩展了 CallableStatement,因此 OracleCallableStatement 也是 CallableStatement。性能不会有任何差异,但如果您不需要 Oracle 的特殊(和非标准)功能,请继续使用 CallableStatement,这将帮助您更轻松地更改数据库。顺便说一句,您会发现熟悉 CallableStatement 的开发人员比后者多。

    【讨论】:

    • 另一个注意事项是使用连接池,一些 JDBC 池具有池准备语句的功能(可调用语句也是准备语句)。我相信您不能将从池中获得的 CallableStatement 转换为 OracleCallableStatement(通过代理主要对象实现的池除外)。
    猜你喜欢
    • 2015-09-13
    • 1970-01-01
    • 2016-01-22
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多