728x90

작년에이어 올해에도 이 시기에는 시스템 오픈을 앞두고 정신없이 개발 진행중!

 

Spring Framework에서 iBatis에서 제공하는 라이브러리들을 이용하여

XML에 정의되어 있는 쿼리문을 실행하는 도중에 당황스러운 일을 경험했다.

다음과 같이 XXXDAO.java 파일에 iBatis에서 제공하는

insert(queryId, parameterObject) 함수를 사용하여

insert문을 수행하였고, DBMS는 Oracle을 사용하기 때문에

기본적으로 insert된 row의 수가 return 될 것이라고 생각했다.

int result = 0;
result = (Integer)insert("kipo.po.is.dao.insertDpst.002", paramVO);
if(result != 0){
     return true;
}else{
     return false;
}

 

하지만 수행결과 NullPointerException을 당하게 됐다.

당황하며 iBatis 라이브러리를 조사해보니 insert(queryId, parameterObject) 함수는 수행 후

새로 생성된 row의 PK를 Object로 return한다고 명시되어 있다.

 

간단한 해결 방법은, insert(queryId, parameterObject) 함수 대신

update(queryId, parameterObject) 함수

사용하면 쿼리 수행 성공 시 1, 실패 시 0을 반환 받을 수 있다.



728x90

'프로그래밍 > java' 카테고리의 다른 글

오픈소스 링크  (0) 2015.06.26
java get 방식 한글 전송 시  (0) 2015.05.26
java jdbc db instance 설정  (0) 2015.05.06
오라클 페이징  (0) 2014.07.23
eclipse에서 javadoc utf-8로 생성하기  (0) 2013.09.17
728x90

JDBC DB 인스턴스 Resource  설정 


* SERVIE NAME은 데이터 베이스의 군 (미러링을 하던지.. 등등)
* SID는 각각의 디비 인스턴스

설정도 위에 따라 바뀐다.
각각의 호스트 스트링은 다음과 같다.

from SID
jdbc:oracle:thin:@host:port:sid

from SERVICE NAME
jdbc:oracle:thin:@//host:port/service name



728x90
728x90

1. 전통적인 방법


SELECT *

  FROM (SELECT ROWNUM rnum

              ,a.*

          FROM (SELECT *

                  FROM members) a)

 WHERE rnum BETWEEN startrow# AND endrow#;




2. Oracle 10g 이후부터 사용가능한 방법


SELECT * FROM 

(

SELECT a.*,

    CEIL((ROW_NUMBER() OVER ( ORDER BY #order by#  desc|ASC )) / #page_row# ) as PAGENUM,

        CEIL(COUNT(*) OVER() / #page_row)  as TOTALPAGE

        FROM table명

        WHERE 1=1

and ...

 

)

where PAGENUM = 1

 

728x90
728x90

이클립스에서 Export --> java>javadoc 을 함으로써 소스파일을 쉽게 html 형식의 javadoc 파일을 쉽게 만들수 있다.

소스 코드를 UTF-8로 작성을 한 경우 빌드된 javadoc 파일들의 한글은 깨져 보이게 된다.

물론 브라우저 상에서 인코딩타입을 UTF-8로 변경하면 깨지지 않은 한글을 볼수 있지만

매번 다른 화면을 이동할 때마다 인코딩타입을 변경해주거나 자동선택을  선택해지 하고 UTF-8로 고정시켜야만 한다.

javadoc파일을 만들때 당연히 옵션이 있을 거라 생각하고 살펴보니..

역시나 javadoc 생성 마지막 단계에서 VM options을 지정함으로써 javadoc 파일의  Charset을 UTF-8로 설정할 수 있었다.

 

 

 

위의 그림과 같이 VM options 텍스트필드에 다음과 같이 입력한다.

 

-locale ko_KR -encoding UTF-8 -charset UTF-8 -docencoding UTF-8

728x90

'프로그래밍 > java' 카테고리의 다른 글

java get 방식 한글 전송 시  (0) 2015.05.26
전자정부(Spring) Framework] iBatis 입력(INSERT) 결과  (1) 2015.05.19
java jdbc db instance 설정  (0) 2015.05.06
오라클 페이징  (0) 2014.07.23
sprint MVC interceptor  (0) 2013.09.12
728x90

Spring MVC 를 사용하다가 보면 필연적으로 Interceptor 를 사용하게 됩니다.
Controller 에서 공통적으로 또는 특정 패키지들에 속한 부분에 대해서 선후 처리가 필요하기 때문입니다.
예전에 이러한 부분들을 AOP 로 구현한 것을 보았습니다. 다른 부분들은 AOP 로 구현하는것이 문제가 아니지만
Controller 부분이라면 Interceptor로 구현하시는것을 권장합니다.

Spring MVC 에서 interceptor 에 대해서 알아보겠습니다.

org.springframework.web.servlet.HandlerInterceptor ,
org.springframework.web.servlet.handler.HandlerInterceptorAdapter
를 상속받아 Interceptor를 구현하면 됩니다.

HandlerInterceptor 를 상속할 경우

preHandle , postHandle , afterCompletion 이렇게 3가지로 구분되어져 있습니다.
이름에서 대충 알수 있겠지만
preHandle : Controller 가 수행되기 전에 실행됩니다. 여기서는 이후 Controller를 수행할지 여부를 boolean 으로 return 하게 됩니다.
postHandle : Controller 가 수행된후 View 를 호출하기 전 상태입니다.
afterCompletion : View 작업까지 완료된 후 호출 됩니다. responseBody 를 이용할 경우 UI 에 이미 값을 전달후 해당 부분이 호출됩니다.

 

호출됩니다.

01 package com.softline.study.interceptor;
02  
03 import javax.servlet.http.HttpServletRequest;
04 import javax.servlet.http.HttpServletResponse;
05  
06 import org.springframework.web.servlet.HandlerInterceptor;
07 import org.springframework.web.servlet.ModelAndView;
08  
09  
10 public class ControllerLoggingInterceptor implements HandlerInterceptor {
11  
12     public boolean preHandle(HttpServletRequest request,
13             HttpServletResponse response, Object handler) throws Exception {
14         System.out.println("preHandle");
15         return true;
16     }
17  
18      
19     public void postHandle(HttpServletRequest request,
20             HttpServletResponse response, Object handler,
21             ModelAndView modelAndView) throws Exception {
22         System.out.println("postHandle");
23     }
24  
25     public void afterCompletion(HttpServletRequest request,
26             HttpServletResponse response, Object handler, Exception ex)
27             throws Exception {
28         System.out.println("afterCompletion");
29     }
30  
31 }

728x90

+ Recent posts