시소당
출처 : 자카르타 프로젝트.com
iBATIS사용하면서 불편하시분들 가져다 쓰세요 ;
iBatis에서 SQL로깅은 한줄로 표현되기 때문에 디버깅이 불편합니다 이를 해결하고자 몇가지 알아봤지만 소스를 직접 수정하는수 밖에 없더군요I. 소스받기
II. 소스 수정 리스트
com.ibatis.common.jdbc.logging.ConnectionLogProxy.java
com.ibatis.common.jdbc.logging.PreparedStatementLogProxy.java
com.ibatis.common.jdbc.logging.StatementLogProxy.java
com.ibatis.sqlmap.engine.mapping.sql.SqlText.java
com.ibatis.sqlmap.engine.mapping.sql.stat.StaticSql.java
1. com.ibatis.common.jdbc.logging.ConnectionLogProxy.java
//log.debug("{conn-" + id + "} Preparing Statement: " + removeBreakingWhitespace ((String) params[0])); log.debug("{conn-" + id + "} Preparing Statement: " + ((String) params[0])); ... //log.debug("{conn-" + id + "} Preparing Call: " + removeBreakingWhitespace ((String) params[0])); log.debug("{conn-" + id + "} Preparing Call: " + ((String) params[0]));
주석처리 후 removeBreakingWhitespace 함수를 제거합니다 removeBreakingWhitespace 함수가 '\n'를 ' '로 replace 시킵니다 2. com.ibatis.common.jdbc.logging.PreparedStatementLogProxy.java
//log.debug("{pstm-" + id + "} Executing Statement: " + removeBreakingWhitespace (sql)); log.debug("{pstm-" + id + "} Executing Statement: " + (sql));
마찬가지로 removeBreakingWhitespace 함수를 제거합니다 3. com.ibatis.common.jdbc.logging.StatementLogProxy.java
//log.debug("{stmt-" + id + "} Statement: " + removeBreakingWhitespace ((String) params[0])); log.debug("{stmt-" + id + "} Statement: " + ((String) params[0]));
역시나 removeBreakingWhitespace 함수를 제거합니다 4. com.ibatis.sqlmap.engine.mapping.sql.SqlText.java
public void setText(String text) { //this.text = text.replace('\r', ' ').replace('\n', ' '); this.text = text; this.isWhiteSpace = text.trim().length() == 0; }
replace 하는 부분을 주석처리해 놓고 this.text = text; 를 추가합니다 5. com.ibatis.sqlmap.engine.mapping.sql.stat.StaticSql.java
public StaticSql(String sqlStatement) { //this.sqlStatement = sqlStatement.replace('\r', ' ').replace('\n', ' '); this.sqlStatement = sqlStatement; }
마찬가지로 replace 하는 부분을 주석처리 하고 this.sqlStatement = sqlStatement; 를 추가시킵니다III. 수동으로 컴파일 후 jar 압축하기 1. 다운받은 ibatis-2.3.0.677 를 압축을 풉니다 2. C:\ibatis-2.3.0.677\src\ibatis-src.zip의 압축을 풉니다 3. C:\ibatis-2.3.0.677\src\ 이하 위의 리스트에 있는 소스를 수정합니다 4. C:\ibatis-2.3.0.677\src\의 수정된 5개의 자바 소스를 C:\ibatis-2.3.0.677\lib\로 카피 합니다 5. C:\ibatis-2.3.0.677\lib\ibatis-2.3.0.677.jar 압축을 풉니다 6. C:\ibatis-2.3.0.677\lib\의 현재 상태입니다 7. cmd 창을 열어 C:\ibatis-2.3.0.677\ 이동 후 컴파일 합니다 javac -classpath "." -d ./ *.java 8. jar 압축 합니다 jar cvf ibatis-2.3.0.677.jar ./ ibatis.jar를 생성후 적용해 보면 한줄로 쭉 나오던 SQL이 아래와 같이 깔끕하게 나옵니다
2007-10-26
10:34:17,328 DEBUG [http-80-Processor24] sql.Connection
(JakartaCommonsLoggingImpl.java:27) - {conn-100009} Preparing
Statement: SELECT COMMON_GB ,COMMON_GB_NM ,USE_YN ,REGISTER_USER ,LAST_UPDATE_USER ,REGISTER_DT ,LAST_UPDATE_DT FROM CMR_COMMONCD_MAST ORDER BY COMMON_GB
재생성한 jar파일 첨부합니다 com.ibatis.common.jdbc.logging.* 패키지에 JDBC관련 로깅 java들이 있습니다 ResultSet 로깅등 여러가지 부분들을 수정 할 수 있습니다