Oracleデータベースの現在のConnectionオブジェクトを取得するにはどうすればよいですか? Spring 3.0.5でJDBCモジュールを使用しています。
Connection
BeanからDataSource
を取得します。
Spring依存性注入を使用してBeanに注入するか、ApplicationContext
に静的にアクセスすることにより、dataSourceにアクセスできます。
DataSource ds = (DataSource)ApplicationContextProvider.getApplicationContext().getBean("dataSource");
Connection c = ds.getConnection();
ただの情報:現在の接続オブジェクトを保持しているSpring JDBCテンプレートを使用しています。これは次のように受信できます。
Connection con;
con = getJdbcTemplate().getDataSource().getConnection();
DataSourceUtils.getConnection()
を使用します。
存在する場合、現在のトランザクションに関連付けられた接続を返します。
この質問が最初に投稿されたときにこのメソッドが使用可能かどうかはわかりませんが、Springの最新バージョンでJdbcTemplate
とPreparedStatementCreator
を使用することをお勧めします。 https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html#query-org.springframework.jdbc.core.PreparedStatementCreator-orgを参照してください.springframework.jdbc.core.PreparedStatementSetter-org.springframework.jdbc.core.ResultSetExtractor- 、または最初のパラメーターとしてquery
を取る他のPreparedStatementCreator
メソッドのいずれか:
_jdbcTemplate.query(con -> {
// add required logic here
return con.prepareStatement("sql");
}, rs -> {
//process row
});
_
これには、他の提供された回答(DataSourceUtils.getConnection()
またはjdbcTemplate.getDataSource().getConnection()
が新しい接続がnot割り当てられているので、利点があります、他のjdbcTemplate
クエリメソッドを呼び出すのと同じ接続管理を使用するため、スプリングが接続を処理するため、接続のクローズ/リリースを心配する必要もありません。