zoukankan      html  css  js  c++  java
  • ssh+c3p0调用存储过程、组拼STRUCT时仅使用一个connection的方法 c3p0代理类转原始类(connection)

    正常情况,我们会调用存储过程用hibernate提供的连接池代理连接类来调用存储过程,而用新建连接给存储过程组拼STRUCT。

    但是这样感觉可以再一步的优化:调用存储过程与构建STRUCT用hibernate提供的同一个代理connection,但是这里需要用到一个connection的类型转换。因为struct不能用代理类组拼。

     1 public Connection getConnection(Connection conn) {
     2         C3P0NativeJdbcExtractor cp30NativeJdbcExtractor = new C3P0NativeJdbcExtractor();
     3         Connection con = null;
     4         try {
     5             con = cp30NativeJdbcExtractor
     6                     .getNativeConnection(conn);
     7         } catch (SQLException e) {
     8             e.printStackTrace();
     9         }
    10         return con;
    11     }

    这样,其实是使用了spring提供的一个转换类方法 C3P0NativeJdbcExtractor,他可以把代理类转化为原始类。 这样就可以节省新建连接所用的资源了。
    并且,在组拼STRUCT时,不需要再关闭conn了,而是交由hibernate统一关闭。

    在这个过程中遇到一个代码异常:Unhandled exception type SQLException。 说明该代码有可能抛出异常,并且你没有通过try。。catch捕捉。  添加try。。catch就正常了

  • 相关阅读:
    Day3-spark基本认识
    团队冲刺第九天
    团队冲刺第八天
    团队冲刺第七天
    团队冲刺第六天
    团队冲刺第五天
    团队冲刺第四天
    团队冲刺第三天
    团队冲刺第二天
    团队冲刺第一天
  • 原文地址:https://www.cnblogs.com/kaka-bing/p/3204975.html
Copyright © 2011-2022 走看看