OracleCallableStatement V/S CallableStatement

问题描述:

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

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

除非需要访问该接口中特定于Oracle的功能,否则不应在代码中引用它,而应仅将代码写入CallableStatement接口。这对所有JDBC代码来说都是一个很好的实践,并且可以让您的应用程序在驱动程序和数据库之间移植。

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

+0

当然,这只适用于如果你关心可移植性。而如果你想使用Oracle特定的扩展? – cagcowboy 2012-02-26 17:00:27

+0

@cagcowboy:你应该总是关心可移植性。如果Oracle重写其驱动程序并更改该接口会怎样? – skaffman 2012-02-26 17:02:04

+0

不,OCS也是一个接口。如果你需要使用匿名的PL/SQL块...你可以使用OCS,否则只需使用CS – 2012-02-26 17:02:15

OracleCallableStatement扩展了CallableStatement,所以OracleCallableStatement也是一个CallableStatement。性能完全没有区别,但如果您不需要Oracle的特殊(和非标准)功能,请继续使用CallableStatement,这将帮助您更轻松地更改数据库。顺便说一下,您会发现更多熟悉CallableStatement的开发人员比后者更熟悉。

+1

另一个需要注意的是使用连接池,一些JDBC池,有一个功能来汇集准备好的语句(并且可调用语句也是一个准备好的语句)。我相信您不能将您从池中获得的CallableStatement转换为OracleCallableStatement(除了通过代理主对象实现的池之外)。 – 2012-02-26 17:06:44