iBATIS-디버깅
iBATIS로 작업하는 동안 프로그램을 디버그하는 것은 쉽습니다. iBATIS는 로깅 지원이 내장되어 있으며 다음 로깅 라이브러리와 함께 작동하며이 순서대로 검색합니다.
- Jakarta Commons Logging (JCL).
- Log4J
- JDK 로깅
iBATIS와 함께 위에 나열된 라이브러리 중 하나를 사용할 수 있습니다.
Log4J로 디버깅
로깅을 위해 Log4J를 사용한다고 가정합니다. 진행하기 전에 다음 사항을 교차 확인해야합니다.
- Log4J JAR 파일 (log4j- {version} .jar)은 CLASSPATH에 있어야합니다.
- CLASSPATH에 log4j.properties가 있습니다.
다음은 log4j.properties 파일입니다. 일부 줄은 주석 처리되어 있습니다. 추가 디버깅 정보가 필요한 경우 주석 처리를 제거 할 수 있습니다.
# Global logging configuration
log4j.rootLogger = ERROR, stdout
log4j.logger.com.ibatis = DEBUG
# shows SQL of prepared statements
#log4j.logger.java.sql.Connection = DEBUG
# shows parameters inserted into prepared statements
#log4j.logger.java.sql.PreparedStatement = DEBUG
# shows query results
#log4j.logger.java.sql.ResultSet = DEBUG
#log4j.logger.java.sql.Statement = DEBUG
# Console output
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %5p [%t] − %m%n
Apaches 사이트 -Log4J Documentation 에서 Log4J에 대한 전체 문서를 찾을 수 있습니다 .
iBATIS 디버깅 예
다음 Java 클래스는 초기화 한 다음 Java 응용 프로그램 용 Log4J 로깅 라이브러리를 사용하는 매우 간단한 예제입니다. CLASSPATH에있는 위에서 언급 한 속성 파일을 사용합니다.
import org.apache.log4j.Logger;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import java.io.*;
import java.sql.SQLException;
import java.util.*;
public class IbatisUpdate{
static Logger log = Logger.getLogger(IbatisUpdate.class.getName());
public static void main(String[] args) throws IOException,SQLException{
Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);
/* This would insert one record in Employee table. */
log.info("Going to update record.....");
Employee rec = new Employee();
rec.setId(1);
rec.setFirstName( "Roma");
smc.update("Employee.update", rec );
log.info("Record updated Successfully ");
log.debug("Going to read records.....");
List <Employee> ems = (List<Employee>)
smc.queryForList("Employee.getAll", null);
Employee em = null;
for (Employee e : ems) {
System.out.print(" " + e.getId());
System.out.print(" " + e.getFirstName());
System.out.print(" " + e.getLastName());
System.out.print(" " + e.getSalary());
em = e;
System.out.println("");
}
log.debug("Records Read Successfully ");
}
}
컴파일 및 실행
먼저 컴파일 및 실행을 진행하기 전에 PATH 및 CLASSPATH를 적절하게 설정했는지 확인하십시오.
- 위와 같이 Employee.xml을 만듭니다.
- 위와 같이 Employee.java를 생성하고 컴파일합니다.
- 위와 같이 IbatisUpdate.java를 생성하고 컴파일합니다.
- 위에 표시된대로 log4j.properties를 생성합니다.
- IbatisUpdate 바이너리를 실행하여 프로그램을 실행하십시오.
다음과 같은 결과를 얻을 수 있습니다. EMPLOYEE 테이블에서 레코드가 업데이트되고 나중에 EMPLOYEE 테이블에서 동일한 레코드를 읽습니다.
DEBUG [main] - Created connection 28405330.
DEBUG [main] - Returned connection 28405330 to pool.
DEBUG [main] - Checked out connection 28405330 from pool.
DEBUG [main] - Returned connection 28405330 to pool.
1 Roma Ali 5000
2 Zara Ali 5000
3 Zara Ali 5000
디버그 방법
위의 예에서 우리는 info() 그러나 요구 사항에 따라 다음 방법 중 하나를 사용할 수 있습니다.
public void trace(Object message);
public void debug(Object message);
public void info(Object message);
public void warn(Object message);
public void error(Object message);
public void fatal(Object message);