2007년 2월 14일 수요일

Hibernate 용 디버깅을 하기 위한 환경설정 - P6SPY설치하기

Hibernate은 일종의 투명한 ORM으로서 관계형 데이터 베이스 모델을 객체지향형 데이터 베이스 모델로 바꿔(?) 주는 매퍼이다.

하지만 Hibernate을 사용한 시스템 디버깅하기란 결코 쉽지는 않다.
Hibernate은 자동으로 HQL을 DBMS가 인식 가능한 SQL로 변환해주는 작용을 하는데 사용자한테 관심이 가는 부분은 SQL문이다. 이 역시 디버깅시 중요한 로깅정보로 쓸수있다.

1. 아래 사이트에가서 P6SPY 최신 버전을 다운로드 받는다.
http://sourceforge.net/projects/p6spy/
다운로드 받은 아카이브 압축을 해제하고 p6spy.jar 파일만 복사하여서 /WEB-INF/lib 속에 넣는다. 또한 spy.properties를 복사하여서 classpath가 잡힌 경로에로 붙혀넣기 해야 한다. 가장 보편적인 경우에는 src폴더속에 붙혀넣으면 된다. 왜냐면 src폴더속에 넣으면 ant로 빌드시 자동으로 WEB-INF속의 classes폴더속에 들어가지므로 다시 classpath를 설정해줄 필요가 없게 된다.

2. 기존에 spring에서 설정 했었던 DB 연결 관련 부분을 다시 설정 해준다.

<!-- DataSource Configuratin Bean -->
 <bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName">
   <value>com.p6spy.engine.spy.P6SpyDriver</value>
  </property>
  <property name="url">
         <value>jdbc:mysql://localhost:3306/dbname</value>
  </property>
  <property name="username">
   <value>username</value>
  </property>
  <property name="password">
   <value>password</value>
  </property>
 </bean>

3. spy.properties파일을 에디터로 열고서 ORACLE JDBC DRIVER의 주석문 체크를 해제하고 MySQL JDBC DRIVER에는 주석문으로 막는다.
# oracle driver
realdriver=oracle.jdbc.driver.OracleDriver
# mysql Connector/J driver
# realdriver=com.mysql.jdbc.Driver

4. P6SPY의 LOG 포맷
현재 시간|실행시간|카테고리|stmt SQL 문자열|real SQL 문자열

5. P6SPY와 SQLPROFILER를 연동하여 실행중인 화면
사용자 삽입 이미지


P6SPY에서 얻은 로깅 정보를 분석해주는 툴인 SQLPRIFILER에 대해서는 차후 업뎃하겠다.

댓글 없음:

댓글 쓰기