kr.co.hit.live.dao
Class JdbcQueryDAO

java.lang.Object
  extended by kr.co.hit.live.dao.JdbcDAO
      extended by kr.co.hit.live.dao.JdbcQueryDAO
Direct Known Subclasses:
SqlQueryDAO

public class JdbcQueryDAO
extends JdbcDAO

SqlQuery 기반의 DAO 클래스이다.

Since:
4.0
Author:
김형도

Field Summary
protected  String packagePath
          DAO 클래스의 클래스패스상의 경로를 저장해 놓는다.
static String SQL_PREFIX_KEY
          SQL 문장의 맨 앞에 공통으로 넣을 내용을 지정하기 위한 설정
static String SQL_SUFFIX_KEY
          SQL 문장의 맨 뒤에 공통으로 넣을 내용을 지정하기 위한 설정
 
Fields inherited from class kr.co.hit.live.dao.JdbcDAO
IS_GET_DB_METADATA_KEY, IS_SET_VO_COLUMN_HEADER_KEY, isGetMetaData, isSetVOColHeader, MAX_FETCH_LIMIT_KEY, maxFetchLimit, META_COLUMN, META_SCHEMA, META_TABLE, META_VIEW, sqlLog
 
Constructor Summary
JdbcQueryDAO()
           
JdbcQueryDAO(DataSource ds)
           
JdbcQueryDAO(String dsn)
           
JdbcQueryDAO(String datasourceName, DataSource datasource)
           
 
Method Summary
protected  int[] executeBatch(SqlQuery query, ValueObject paramVO)
           여러건의 update, insert, delete query를 한번의 배치로 수행한다.
protected  ValueObject executeCall(SqlQuery query, ValueObject paramVO)
          Stored Procedure를 실행한다.
protected  ValueObjectAssembler executeCall(SqlQuery query, ValueObject paramVO, String[] rsNames)
           ResultSet을 리턴하거는 Oracle의 REF CURSOR를 OUT으로 반환하는 Stored Procedure를 실행한다.
protected  ValueObject executeQuery(SqlQuery query, ValueObject paramVO)
          조회용 SQL 문을 수행한다.
protected  ValueObject executeQuery(SqlQuery query, ValueObject paramVO, ValueObject pageVO)
          주어진 SQL에 대하여 페이지 단위로 조회를 수행한다.
protected  int executeUpdate(SqlQuery query, ValueObject paramVO)
           DB update, insert, delete Query를 수행한다.
protected  ValueObject executeUpdateReturnKeys(SqlQuery query, ValueObject paramVO)
           DB Insert Query를 수행하며, 입력된 결과를 리턴한다.
protected  ValueObject executeUpdateReturnKeys(SqlQuery query, ValueObject paramVO, int numKeyCols)
           DB Insert Query를 수행하며, 입력된 결과를 리턴한다.
protected  ValueObject executeUpdateReturnKeys(SqlQuery query, ValueObject paramVO, int[] columnIndexes)
           DB Insert Query를 수행하며, 입력된 결과를 리턴한다.
protected  ValueObject executeUpdateReturnKeys(SqlQuery query, ValueObject paramVO, String[] columnNames)
           DB Insert Query를 수행하며, 입력된 결과를 리턴한다.
protected  SqlQueryPage getQueryPage(String relativePath)
          자신의 패키지 디렉토리 위치를 기준으로 하위 경로를 주면 전체 경로를 생성하여 해당 SQL 파일을 사용하여 SqlQueryPage 객체를 생성하여 반환한다.
protected  ValueObject queryMetaData(int metaType, String name)
           
 
Methods inherited from class kr.co.hit.live.dao.JdbcDAO
close, close, close, executeBatch, executeBatch, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeUpdate, executeUpdate, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, fetchResultSet, getColumnReader, getConnection, getDataSourceName, getSupporter, queryMetaData, setDatasource
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

packagePath

protected String packagePath
DAO 클래스의 클래스패스상의 경로를 저장해 놓는다. sql 파일의 상대경로로부터 전체 클래스패스 경로를 만들어 내기 위해서 사용한다.


SQL_PREFIX_KEY

public static final String SQL_PREFIX_KEY
SQL 문장의 맨 앞에 공통으로 넣을 내용을 지정하기 위한 설정

See Also:
Constant Field Values

SQL_SUFFIX_KEY

public static final String SQL_SUFFIX_KEY
SQL 문장의 맨 뒤에 공통으로 넣을 내용을 지정하기 위한 설정

See Also:
Constant Field Values
Constructor Detail

JdbcQueryDAO

public JdbcQueryDAO()

JdbcQueryDAO

public JdbcQueryDAO(String datasourceName,
                    DataSource datasource)

JdbcQueryDAO

public JdbcQueryDAO(String dsn)

JdbcQueryDAO

public JdbcQueryDAO(DataSource ds)
Method Detail

executeQuery

protected ValueObject executeQuery(SqlQuery query,
                                   ValueObject paramVO)
                            throws LiveException
조회용 SQL 문을 수행한다. 수행할 SQL문을 담고 있는 SqlQuery 객체와 파라메터를 담고 있는 ValueObject 객체를 받아서 SQL을 수행한 후 그 결과 데이터를 ValueObject로 리턴한다.

Parameters:
query - 수행할 SQL문을 담고 있는 SqlQuery 객체
paramVO - 파라메터를 담고 있는 ValueObject
Returns:
ValueObject 조회 결과를 담은 ValueObject
Throws:
LiveException

executeQuery

protected ValueObject executeQuery(SqlQuery query,
                                   ValueObject paramVO,
                                   ValueObject pageVO)
                            throws LiveException
주어진 SQL에 대하여 페이지 단위로 조회를 수행한다. 수행할 SQL문을 담고 있는 SqlQuery 객체와 파라메터를 담고 있는 ValueObject 객체를 받아서 SQL을 수행한 후 그 결과 데이터를 ValueObject로 리턴한다.

Parameters:
query - 수행할 SQL문을 담고 있는 SqlQuery 객체
paramVO - 파라메터를 담고 있는 ValueObject
pageVO - 페이지 단위 조회를 위한 추가 정보
  • max_cnt 한 번에 담아올 최대 조회 건수(실제로는 1건 더 읽어온다.)
  • offset offset 만큼 조회결과를 건너뛰어 그 다음부터 읽어온다.
  • tot_cnt 전체 조회 건수가 담겨저 리턴된다.
  • rmn_cnt VO에 담겨지지 않은 남은 조회 건수가 담겨저 리턴된다.
  • sort_field DB2의 경우 정렬 기준이 되는 컬럼명을 지정한다.
Returns:
ValueObject 조회 결과를 담은 ValueObject
Throws:
LiveException

executeUpdate

protected int executeUpdate(SqlQuery query,
                            ValueObject paramVO)
                     throws LiveException

DB update, insert, delete Query를 수행한다. 수행할 SQL문을 담고 있는 SqlQuery 객체와 파라메터를 담고 있는 ValueObject 객체를 받아서 SQL을 수행한 후 처리된 건 수를 리턴한다.

Parameters:
query - 수행할 SQL문을 담고 있는 SqlQuery 객체
paramVO - 파라메터를 담고 있는 ValueObject
Returns:
INSERT, UPDATE, DELETE 실행결과의 row count 또는 0(DDL SQL 문의 경우)
Throws:
LiveException

executeUpdateReturnKeys

protected ValueObject executeUpdateReturnKeys(SqlQuery query,
                                              ValueObject paramVO,
                                              int numKeyCols)
                                       throws LiveException

DB Insert Query를 수행하며, 입력된 결과를 리턴한다. 수행할 SQL문을 담고 있는 SqlQuery 객체와 파라메터를 담고 있는 ValueObject 객체를 받아서 SQL을 수행한 후 테이블에 입력되는 컬럼들 중 테이블의 컬럼위치를 기준으로 처음부터 numKeyCols 만큼 지정된 개수의 컬럼들의 입력된 값을 ValueObject로 담아서 리턴해준다. JDBC 3.0을 지원하는 Driver에서만 사용이 가능하다.

Parameters:
query - 수행할 SQL문을 담고 있는 SqlQuery 객체
paramVO - 파라메터를 담고 있는 ValueObject
numKeyCols - 리턴해 줄 테이블 컬럼의 개수를 지정한다.
Returns:
실행된 SQL이 Insert 문인 경우에 만 입력된 컬럼 값을 담은 ValueObject를 리턴, 그 외에는 비어있는 ValueObject를 리턴
Throws:
LiveException

executeUpdateReturnKeys

protected ValueObject executeUpdateReturnKeys(SqlQuery query,
                                              ValueObject paramVO,
                                              int[] columnIndexes)
                                       throws LiveException

DB Insert Query를 수행하며, 입력된 결과를 리턴한다. 수행할 SQL문을 담고 있는 SqlQuery 객체와 파라메터를 담고 있는 ValueObject 객체를 받아서 SQL을 수행한 후 테이블에 입력되는 컬럼들 중 columnIndexes로 지정된 위치의 컬럼들의 입력된 값을 ValueObject로 담아서 리턴해준다. JDBC 3.0을 지원하는 Driver에서만 사용이 가능하다.

Parameters:
query - 수행할 SQL문을 담고 있는 SqlQuery 객체
paramVO - 파라메터를 담고 있는 ValueObject
columnIndexes - 리턴해 줄 테이블 컬럼들의 인덱스를 담은 배열
Returns:
실행된 SQL이 Insert 문인 경우에 만 입력된 컬럼 값을 담은 ValueObject를 리턴, 그 외에는 비어있는 ValueObject를 리턴
Throws:
LiveException

executeUpdateReturnKeys

protected ValueObject executeUpdateReturnKeys(SqlQuery query,
                                              ValueObject paramVO,
                                              String[] columnNames)
                                       throws LiveException

DB Insert Query를 수행하며, 입력된 결과를 리턴한다. 수행할 SQL문을 담고 있는 SqlQuery 객체와 파라메터를 담고 있는 ValueObject 객체를 받아서 SQL을 수행한 후 테이블에 입력되는 컬럼들 중 columnNames로 지정된 명칭의 컬럼들로 입력된 값을 ValueObject로 담아서 리턴해준다. JDBC 3.0을 지원하는 Driver에서만 사용이 가능하다.

Parameters:
query - 수행할 SQL문을 담고 있는 SqlQuery 객체
paramVO - 파라메터를 담고 있는 ValueObject
columnNames - 리턴해 줄 테이블 컬럼들의 이름을 배열
Returns:
실행된 SQL이 Insert 문인 경우에 만 입력된 컬럼 값을 담은 ValueObject를 리턴, 그 외에는 비어있는 ValueObject를 리턴
Throws:
LiveException

executeUpdateReturnKeys

protected ValueObject executeUpdateReturnKeys(SqlQuery query,
                                              ValueObject paramVO)
                                       throws LiveException

DB Insert Query를 수행하며, 입력된 결과를 리턴한다. 수행할 SQL문을 담고 있는 SqlQuery 객체와 파라메터를 담고 있는 ValueObject 객체를 받아서 SQL을 수행한 후 자동으로 값이 생성되는 컬럼들로 입력된 값을 ValueObject로 담아서 리턴해준다. JDBC 3.0을 지원하는 Driver에서만 사용이 가능하다.

Parameters:
query - 수행할 SQL문을 담고 있는 SqlQuery 객체
paramVO - 파라메터를 담고 있는 ValueObject
Returns:
실행된 SQL이 Insert 문인 경우에 만 입력된 컬럼 값을 담은 ValueObject를 리턴, 그 외에는 비어있는 ValueObject를 리턴
Throws:
LiveException

executeBatch

protected int[] executeBatch(SqlQuery query,
                             ValueObject paramVO)
                      throws LiveException

여러건의 update, insert, delete query를 한번의 배치로 수행한다. 배치처리될 SqlQuery 객체와 파라메터들을 담고 있는 ValueObject를 전달하면 ValueObject내의 각 row에 대하여 처리를 한다.

동적 Sql이 배치처리될 경우 첫번째 파라메터를 기준으로 생성된 Sql이 적용된다.

Parameters:
query - 수행할 SqlQuery 객체
paramVO - Query 문에 매핑될 파라메터들을 여러건 가지고 있는 ValueObject
Returns:
INSERT, UPDATE, DELETE 실행결과의 row count 또는 0(DDL SQL 문의 경우)
Throws:
LiveException

queryMetaData

protected ValueObject queryMetaData(int metaType,
                                    String name)
                             throws LiveException
Throws:
LiveException

executeCall

protected ValueObject executeCall(SqlQuery query,
                                  ValueObject paramVO)
                           throws LiveException
Stored Procedure를 실행한다. 수행할 Procedure 호출문을 담고 있는 SqlQuery 객체와 파라메터를 담고 있는 ValueObject 객체를 받아서 Procedure를 실행 후 그 결과 데이터를 ValueObject로 리턴한다. Stored Procedure가 ResultSet을 리턴하는 경우 또는 Oracle의 REF_CURSOR를 OUT으로 반환하는 경우에는 ValueObjectAssembler를 리턴하는 executeCall() 메소드를 사용해야한다.

Parameters:
query -
paramVO -
Returns:
Throws:
LiveException

executeCall

protected ValueObjectAssembler executeCall(SqlQuery query,
                                           ValueObject paramVO,
                                           String[] rsNames)
                                    throws LiveException

ResultSet을 리턴하거는 Oracle의 REF CURSOR를 OUT으로 반환하는 Stored Procedure를 실행한다. 수행할 Procedure 호출문을 담고 있는 SqlQuery 객체와 파라메터를 담고 있는 ValueObject 객체를 받아서 Procedure를 실행 후 그 결과 데이터를 각각 ValueObject로 생성한 후 다시 ValueObjectAssembler 객체에 담아서 리턴한다.

각 결과 ValueObject의 이름은 파라메터로 주어진 rsNames를 사용하여 명명된다. rsNames[0]는 OUT 또는 INOUT 파라메터 결과를 담을 ValueObject 이름이며 rsNames[1]부터는 ResultSet으로 부터 결과를 담을 ValueObject의 이름으로 사용된다. Stored Procedure에서 리턴하는 ResultSet의 개수가 n개라면 rsNames[]의 length는 n+1개가 되어야 한다.

또한 OUT으로 반환되는 값 중에 Oracle의 REF CURSOR(타입은 ORACLECURSOR로 지정함)가 있으면 Cursor로 부터 조회된 값들은 별도의 ValueObject 로 생성되어 반환되는 ValueObjectAssembler 객체에 담겨진다.

Parameters:
query -
paramVO -
rsNames -
Returns:
Throws:
LiveException

getQueryPage

protected SqlQueryPage getQueryPage(String relativePath)
자신의 패키지 디렉토리 위치를 기준으로 하위 경로를 주면 전체 경로를 생성하여 해당 SQL 파일을 사용하여 SqlQueryPage 객체를 생성하여 반환한다.

Parameters:
relativePath -
Returns:


Copyright © 2014. All Rights Reserved.