Verity's Daily Logs_

[Spring-Framework]MyBatis와 연동하기-2 본문

Spring Framework

[Spring-Framework]MyBatis와 연동하기-2

johye0 2020. 8. 25. 16:31
반응형

[참고도서: https://book.naver.com/bookdb/book_detail.nhn?bid=13993776]

 

MyBatis는 내부적으로 JDBC의 PreparedStatement를 이용해서 SQL을 처리한다. 따라서 SQL에 전달되는 파라미터는 JDBC에서 와 같이 '?'로 치환되어서 처리됨. 복잡한 SQL의 경우 '?'로 나오는 값이 제대로 되었는지 확인하기가 쉽지 않고, 실행된 SQL의 내용을 정확히 확인하기는 어렵다.

이런 문제를 해결하기 위해서 SQL을 변환해서 PreparedStatement에 사용된 '?'가 어떤 값으로 처리되었는지 확인하는 기능을 추가해 보도록 한다. 

 

1. pom.xml Dependency 추가

log4jdbc-log4j2 라이브러리를 추가한다.

<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1 -->
        <dependency>
            <groupId>org.bgee.log4jdbc-log4j2</groupId>
            <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
            <version>1.16</version>
        </dependency>

 

 

2. 로그설정 파일(properties) 추가

src/main/resources 밑에 log4jdbc.log4j2.properties 파일을 추가한다.

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator

 

3. RootConfig 클래스 변경

public class RootConfig {
    
    @Bean
    public DataSource dataSource() {
        HikariConfig hikariConfig=new HikariConfig();
        /*hikariConfig.setDriverClassName("oracle.jdbc.driver.OracleDriver");
        hikariConfig.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:orcl");*/
        hikariConfig.setDriverClassName("net.sf.log4jdbc.sql.jdbcapi.DriverSpy");
        hikariConfig.setJdbcUrl("jdbc:log4jdbc:oracle:thin:@localhost:1521:orcl");
        hikariConfig.setUsername("TEST_EX");
        hikariConfig.setPassword("1234");
        
        HikariDataSource dataSource =new HikariDataSource(hikariConfig);
        
        return dataSource;
        
    }

 

4. 로그레벨 설정하기

테스트를 실행하면 상당히 많은 양의 로그가 출력되기 때문에 불편하다. 이런 상황에서는 로그 레벨을 이용해서 조금 수정해줄 필요가 있다.

테스트 코드가 실행될 때의 로그와 관련 설정은 src/test/resources밑에 log4j.xml을 이용함.

 

- 테스트 코드가 실행될 때 보여지는 'INFO ...' 메세지는 log4j.xml 파일의 마지막 부분에 있는 설정에 영향을 받는다.

<!-- Root Logger -->
	<root>
		<priority value="info" />
		<appender-ref ref="console" />
	</root>
	
</log4j:configuration>

 

- 출력되는 로그를 조절하고 싶다면 추가적인 <logger> 를 지정해서 처리한다.

<logger name="jdbc.audit">
	<level value="warn" />
</logger>
<logger name="jdbc.resulteset">
	<level value="warn" />
</logger>
<logger name="jdbc.connection">
	<level value="warn" />
</logger>

 

반응형
Comments