2012-11-30 2 views
2

내가 (길고 지루한 이야기를 공개하지 않는 것을 선호하는) 많은 이유 때문에 복잡한 응용 프로그램과 데이터베이스의 상호 작용을 캡처해야합니다. 이 응용 프로그램은 Spring/JdbcTemplate 위에 구축되며이 응용 프로그램에서 보낸 모든 SQL을 찾아야합니다. 가능한 한 가장 간단하게 어떻게 할 수 있습니까?보낸 모든 SQL을 수집하는 가장 간단한 방법

JdbcTemplate의 의사 모의 구현을 만드는 것이 타당하지 않은 것으로 보입니다. 먼저 JdbcTemplate은 인터페이스가 아닌 클래스입니다. 둘째, 구현하기가 지루한 커다란 인터페이스를 가지고 있습니다. DataSourceConnection을 조롱하는 선을 따라 모든 SQL을 보내려는 생각을하고 있습니다.하지만이 작업을 수행하는 더 쉬운 방법이 있을까요?

+2

올바르게 기억한다면 스프링의 loglevel을 DEBUG로 설정하면 모든 SQL 문을 로그 파일에 쓸 것입니다. –

+0

올바른,하지만 회귀 테스트 목적으로이 필요합니다. 가능한 경우 로깅 출력에 의존하는 회귀 테스트 인프라를 사용하지 않기를 바랍니다. –

답변

4

이런 종류의 문제는 매우 깔끔하게 해결됩니다. P6Spy. Spring과 함께 동작시키는 방법에 대해서는 good article이 있습니다.

희망이 있습니다.

+0

테스트를 거쳤으며 훌륭하게 작동합니다. 우수한! 휠을 재발견하지 않아도 되서 나를 구 해주셔서 정말 기쁩니다. 건배! –

2

외출하는 모든 SQL을 캡처하는 유일한 방법은 응용 프로그램과 데이터베이스 간의 접점입니다. 즉, 실제로 JDBC 상호 작용을 처리하는 라이브러리 구현에서 DataSource, Connection 및 모든 유형 Statement을 꾸미고 SimpleJdbcTemplate bean 정의에 지정된 데코 레이팅 된 데이터 소스에서 데코 레이팅 된 연결에서 실행되는 모든 명령문을 기록하십시오. 다른 시점에서 유지 관리 관점에서이를 포착하는 것은 어려울 것입니다.

+0

그건 내가 생각한대로 말이 되네. –

관련 문제