source

Spring JDBC에서 현재 Connection 개체를 가져오는 방법

manycodes 2023. 2. 10. 22:09
반응형

Spring JDBC에서 현재 Connection 개체를 가져오는 방법

Oracle 데이터베이스의 현재 Connection 개체를 가져오려면 어떻게 해야 합니까?Spring 3.0.5의 JDBC 모듈을 사용하고 있습니다.

를 입수하다Connection에서DataSource콩.

spring 의존성 주입을 사용하여 콩에 주입하거나 dataSource에 액세스하여ApplicationContext정적으로:

DataSource ds = (DataSource)ApplicationContextProvider.getApplicationContext().getBean("dataSource");
Connection c = ds.getConnection();

Just an Info : Spring JDBC Template를 사용하고 있습니다.이 템플릿은 현재 접속 오브젝트를 보유하고 있으며 다음과 같이 수신할 수 있습니다.

Connection con;
con = getJdbcTemplate().getDataSource().getConnection();

사용하다DataSourceUtils.getConnection().

현재 트랜잭션과 관련된 연결이 있는 경우 해당 연결을 반환합니다.

이 질문이 처음 게시되었을 때 이 방법을 사용할 수 있었는지 모르겠지만, 최신 버전의 Spring에서 이 방법을 사용하는 것이 선호되는 것 같습니다.JdbcTemplate그리고.PreparedStatementCreatorhttps://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()새로운 접속이 할당되어 있지 않기 때문에, 다른 접속을 호출하는 것과 같은 접속 관리를 사용합니다.jdbcTemplate메서드의 쿼리따라서 스프링이 연결을 처리하므로 연결을 닫거나 해제할 염려도 없습니다.

언급URL : https://stackoverflow.com/questions/8428235/how-to-get-current-connection-object-in-spring-jdbc

반응형