如何将类型转换连接到OracleConnection与connection.unwrap(OracleConnection.class)不同

时间:2016-03-31 19:13:25

标签: java database oracle jdbc ojdbc

如何将java.sql.Connection类型转换为OracleConnecction与从java.sql.Connection unwrap方法获取OracleConnection不同。

另外,如果我通过connection.unwrap(OracleConnection.class)创建OracleConnection,那么我应该在finally中关闭OracleConnection还是最后关闭java.sql.Connection。

1 个答案:

答案 0 :(得分:2)

差异有点微妙但有意义。

如果实际的实现对象与声明的类不兼容,则类型转换将失败ClassCastException。即如果实现不是OracleConnection,并且您试图对其进行类型转换,那么您将获得异常。

使用unwrap(Class clazz)将尝试查找指定类型的对象并返回该对象,如果无法使用SQLException则失败。使用Wrapper界面方法的好处是,您可以使用unwrap方法提前检查isWrapperFor是否成功。