request.getContextPath(); 
request.getRequestURI(); 
request.getHeader("REFERER"); 
request.getRealPath("/")


request.getContextPath()는 프로젝트의 Context path명을 반환한다.

요청 : http://localhost:8080/example/test.jsp 

리턴값 : /example




request.getRequestURI()는 웹전체 경로(프로젝트명+ 파일 경로)까지 반환한다.

요청 : http://localhost:8080/example/test.jsp

리턴값 : /example/test.jsp 




request.getHeader("REFERER")는 요청을 한 부모요청의 URL주소를 반환한다.

현재 페이지:  http://localhost:8080/example/test1.do

요청 페이지 :  http://localhost:8080/example/test.do

리턴값 : http://localhost:8080/example/test.do




request.getRealPath("/")는 서버 또는 로컬의 웹애플리케애션 서버의 docBase 설정값을 반환한다.

요청 : http://localhost:8080/example/test.jsp

리턴값 : D:\Project\webapps\example\





Posted by finewoo
,


기본적으로 자바는 디버깅을 위해 System.out.println()을 사용한다. 그리고 비교적 많이 사용되는 log4j를 이용해서 sql을 콘솔에 찍기도 한다.
log4sql는 단순히 쿼리를 화면에 출력해주는것 뿐만 아니라 sql이 실행된 시간과 실행된 메소드, sql이 실행되는데 소요된 시간, 실행된 sql을 자동으로 들여쓰기를 해서 보여준다.
쿼리가 실행되고 소요되는 시간은 실제 서비스 환경하에 시간과 거의 일치하므로 비효율적인 쿼리를 찾아내는데 도움이 된다.
설치하는 방법도 간단하며 서버성능에 영향을 주지도 않는다.

홈페이지
http://log4sql.sourceforge.net

다운로드
log4sql.jar

log4sql을 WAS lib에 추가하고 driver class name을 DB에 따라 아래와 같이 변경하는 것으로 사용할 준비는 끝난다.


oracle인 경우 

oracle.jdbc.drirver.OracleDriver     =>  core.log.jdbc.driver.OracleDriver



mysql인 경우

com.mysql.jdbc.Driver - or - org.gjt.mm.mysql.Driver
=>  core.log.jdbc.driver.MysqlDriver



참고로 log4sql은 쿼리가 실행된 메소드도 표시해 준다. 하지만 쿼리를 날리는 클래스를 별도로 두고 해당 클래스를 이용해서 쿼리를 날리게 되면 기대하는 결과를 얻을 수 없다.

다른 DB인 경우나 상세 설정 부문은 http://log4sql.sourceforge.net 에서 참고할 수 있다.




Posted by finewoo
,

iBatis로 데이터베이스 테이블의 int형 컬럼값을 가져올때
컬럼의 값이 NULL이거나 값이 없을 경우 예외가 발생하게 된다.
char형 컬럼은 상관이 없다.

이런 현상은 int가 객체가 아니기 때문에 매핑시 에러가 발생하게 된다고 한다.
이 오류를 해결하기 위해서 물론 쿼리에서 null일경우 0으로 치환할 수는 있다.
하지만, 개인적인 생각으로는 null과 0은 분명히 다른 값이므로 임의로 null을 쿼리에서 0으로 변환하는 것은 그닥 추천할 만한 방법은 아닌듯 싶다.

그래서, 테이블 생성할때 컬럼속성이 int형인 경우는 테이블 생성시 제약조건에서 디폴트 값을 0 또는 다른 값으로 미리 지정하는 방법이 나을 것 같다.




'Java > iBatis' 카테고리의 다른 글

[iBatis] NUMBER(INT) 타입 컬럼 처리 시 cast 오류 발생  (1) 2011.03.29
[iBatis] Dynamic SQL, iterate  (1) 2010.02.03
Posted by finewoo
,