ssh+c3p0調用存儲過程、組拼STRUCT時僅使用一個connection的方法 c3p0代理類轉原始類(connection)

正常狀況,咱們會調用存儲過程用hibernate提供的鏈接池代理鏈接類來調用存儲過程,而用新建鏈接給存儲過程組拼STRUCT。spring

可是這樣感受能夠再一步的優化:調用存儲過程與構建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統一關閉。spa

在這個過程當中遇到一個代碼異常:Unhandled exception type SQLException。 說明該代碼有可能拋出異常,而且你沒有經過try。。catch捕捉。  添加try。。catch就正常了hibernate

相關文章
相關標籤/搜索