|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectkr.co.hit.live.dao.JdbcDAO
kr.co.hit.live.dao.JdbcQueryDAO
kr.co.hit.live.dao.SqlQueryDAO
public class SqlQueryDAO
SqlQuery 기능을 내부에 포함시킨 DAO이며 이 클래스를 상속받아 별도 DAO를 작성하는 방식이 아니라 DAO 클래스 작성없이 이 비지니스 로직에서 DAO를 바로 사용하는 방식이다.
아래의 예는 서비스 컨테이너를 사용하지 않고 바로 객체를 생성하여 사용하는 예이다. SqlQueryDAO 생성시 3번째 인자로 BusinessMgtImpl 객체 자신을 파라메터로 전달하고 있는데, 이것은 BusinessMgtImpl 클래스의 패키지를 사용하여 상대경로 지정된 Query Map 파일의 절대 경로를 얻어오기 위한 목적과 BusinessMgtImpl 클래스를 로딩한 클래스로더를 얻어오기 위한 목적으로 사용된다.
public class BusinessMgtImpl extends ContextAwareService implements BusinessMgt {
SqlQueryDAO dao = new SqlQueryDAO("jdbc/comdb","sqls/businessdao_sqls.xml",this);
public ValueObject getBusinessLogic(ValueObject pVO) throws LiveException {
...
ValueObject getVO = dao.executeQuery("getsql",pVO);
...
}
}
서비스 컨테이너를 사용하여 Injection하는 방식으로 코딩할 경우는 아래과 같이 작성할 수 있다.
이 경우 SqlQueryDAO가 ParantAwareSerivce이므로 BusinessMgtImpl 객체가 setParent()
메소드를 통하여 전달되어 진다.
public class BusinessMgtImpl extends ContextAwareService implements BusinessMgt {
SqlQueryDAO dao = null;
public void setDao(SqlQueryDAO dao) {
this.dao = dao;
}
public ValueObject getBusinessLogic(ValueObject pVO) throws LiveException {
...
}
}
-서비스 설정 파일
<service name="BusinessDAO"
class="kr.co.hit.live.dao.SqlQueryDAO"
interceptor="system.proxy"
singleton="true">
<property name="datasource" ref="jdbc.comdb"/>
<property name="sql" value="sqls/businessdao_sqls.xml"/>
</service>
<service name="BusinessMgt"
interface="${package}.businessmgt.BusinessMgt"
class="${package}.businessmgt.BusinessMgtImpl"
interceptor="system.proxy"
singleton="true">
<property name="dao" ref="BusinessDAO"/>
</service>
| Field Summary | |
|---|---|
protected Object |
parentObj
SqlQueryDAO 객체를 생성하는 객체를 부모객체로 저장해 놓는다. |
protected String |
sqlPath
|
protected SqlQueryPage |
sqls
한번 파싱된 Sql을 cache 하기 위하여 사용됨 |
| Fields inherited from class kr.co.hit.live.dao.JdbcQueryDAO |
|---|
packagePath, SQL_PREFIX_KEY, SQL_SUFFIX_KEY |
| 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 | |
|---|---|
SqlQueryDAO()
기본 생성자 |
|
SqlQueryDAO(DataSource ds)
생성자이다. |
|
SqlQueryDAO(DataSource ds,
Object parent)
생성자이다. |
|
SqlQueryDAO(DataSource ds,
String sqlpath)
생성자이다. |
|
SqlQueryDAO(DataSource ds,
String sqlpath,
Object parent)
생성자이다. |
|
SqlQueryDAO(Object parent)
생성자이다. |
|
SqlQueryDAO(String dsn)
생성자이다. |
|
SqlQueryDAO(String dsn,
Object parent)
생성자이다. |
|
SqlQueryDAO(String dsn,
String sqlpath)
생성자이다. |
|
SqlQueryDAO(String dsn,
String sqlpath,
Object parent)
생성자이다. |
|
| Method Summary | |
|---|---|
int[] |
executeBatch(String queryname,
ValueObject paramVO)
여러건의 update, insert, delete query를 한번의 배치로 수행한다. |
ValueObject |
executeCall(String queryname,
ValueObject paramVO)
Stored Procedure를 실행한다. |
ValueObjectAssembler |
executeCall(String queryname,
ValueObject paramVO,
String[] rsNames)
ResultSet을 리턴하거는 Oracle의 REF CURSOR를 OUT으로 반환하는 Stored Procedure를 실행한다. |
ValueObject |
executeQuery(String queryname,
ValueObject paramVO)
조회용 SQL 문을 수행한다. |
ValueObject |
executeQuery(String queryname,
ValueObject paramVO,
ValueObject pageVO)
주어진 SQL에 대하여 페이지 단위로 조회를 수행한다. |
int |
executeUpdate(String queryname,
ValueObject paramVO)
update, insert, delete Query를 수행한다. |
ValueObject |
executeUpdateReturnKeys(String queryname,
ValueObject paramVO)
Insert Query를 수행하며, 입력된 결과를 리턴한다. |
ValueObject |
executeUpdateReturnKeys(String queryname,
ValueObject paramVO,
int numKeyCols)
Insert Query를 수행하며, 입력된 결과를 리턴한다. |
ValueObject |
executeUpdateReturnKeys(String queryname,
ValueObject paramVO,
int[] columnIndexes)
Insert Query를 수행하며, 입력된 결과를 리턴한다. |
ValueObject |
executeUpdateReturnKeys(String queryname,
ValueObject paramVO,
String[] columnNames)
Insert Query를 수행하며, 입력된 결과를 리턴한다. |
void |
setParent(Object parent)
이 객체를 생성하는 객체를 지정한다. |
void |
setSql(String path)
사용할 SQL 파일의 경로를 지정한다. |
| Methods inherited from class kr.co.hit.live.dao.JdbcQueryDAO |
|---|
executeBatch, executeCall, executeCall, executeQuery, executeQuery, executeUpdate, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, executeUpdateReturnKeys, getQueryPage, queryMetaData |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected String sqlPath
protected Object parentObj
protected SqlQueryPage sqls
| Constructor Detail |
|---|
public SqlQueryDAO()
public SqlQueryDAO(Object parent)
parent - 부모객체
public SqlQueryDAO(String dsn,
Object parent)
dsn - 데이터소스명parent - 부모객체public SqlQueryDAO(String dsn)
dsn - 데이터소스명
public SqlQueryDAO(String dsn,
String sqlpath,
Object parent)
dsn - 데이터소스명sqlpath - SQL 파일의 경로(클래스패스 경로)parent - 부모객체
public SqlQueryDAO(String dsn,
String sqlpath)
dsn - 데이터소스명sqlpath - SQL 파일의 경로(클래스패스 경로)
public SqlQueryDAO(DataSource ds,
Object parent)
ds - 데이터소스 객체parent - 부모객체public SqlQueryDAO(DataSource ds)
ds - 데이터소스 객체
public SqlQueryDAO(DataSource ds,
String sqlpath,
Object parent)
ds - 데이터소스 객체sqlpath - SQL 파일의 경로(클래스패스 경로)parent - 부모객체
public SqlQueryDAO(DataSource ds,
String sqlpath)
ds - 데이터소스 객체sqlpath - SQL 파일의 경로(클래스패스 경로)| Method Detail |
|---|
public void setParent(Object parent)
setParent in interface ParentAwareServicepublic void setSql(String path)
sqlpath - SQL 파일의 경로(클래스패스 경로)
public int[] executeBatch(String queryname,
ValueObject paramVO)
throws LiveException
여러건의 update, insert, delete query를 한번의 배치로 수행한다. 배치처리될 SQL의 statement ID와 파라메터들을 담고 있는 ValueObject를 전달하면 ValueObject내의 각 row에 대하여 처리를 한다.
동적 Sql이 배치처리될 경우 첫번째 파라메터를 기준으로 생성된 Sql이 적용된다.
queryname - 실행할 SQL의 statement IDparamVO - Query 문에 매핑될 파라메터들을 여러건 가지고 있는 ValueObject
LiveException
public ValueObject executeQuery(String queryname,
ValueObject paramVO)
throws LiveException
queryname - 실행할 SQL의 statement IDparamVO - 파라메터를 담고 있는 ValueObject
LiveException
public ValueObject executeQuery(String queryname,
ValueObject paramVO,
ValueObject pageVO)
throws LiveException
queryname - 실행할 SQL의 statement IDparamVO - 파라메터를 담고 있는 ValueObjectpageVO - 페이지 단위 조회를 위한 추가 정보
LiveException
public int executeUpdate(String queryname,
ValueObject paramVO)
throws LiveException
update, insert, delete Query를 수행한다. 수행할 SQL문의 statement ID와 파라메터를 담고 있는 ValueObject 객체를 받아서 SQL을 수행한 후 처리된 건 수를 리턴한다.
queryname - 실행할 SQL의 statement IDparamVO - 파라메터를 담고 있는 ValueObject
LiveException
public ValueObject executeUpdateReturnKeys(String queryname,
ValueObject paramVO)
throws LiveException
Insert Query를 수행하며, 입력된 결과를 리턴한다. 수행할 SQL문의 statement ID와 파라메터를 담고 있는 ValueObject 객체를 받아서 SQL을 수행한 후 자동으로 값이 생성되는 컬럼들로 입력된 값을 ValueObject로 담아서 리턴해준다. JDBC 3.0을 지원하는 Driver에서만 사용이 가능하다.
queryname - 실행할 SQL의 statement IDparamVO - 파라메터를 담고 있는 ValueObject
LiveException
public ValueObject executeUpdateReturnKeys(String queryname,
ValueObject paramVO,
int numKeyCols)
throws LiveException
Insert Query를 수행하며, 입력된 결과를 리턴한다. 수행할 SQL문의 statement ID와 파라메터를 담고 있는 ValueObject 객체를 받아서 SQL을 수행한 후 테이블에 입력되는 컬럼들 중 테이블의 컬럼위치를 기준으로 처음부터 numKeyCols 만큼 지정된 개수의 컬럼들의 입력된 값을 ValueObject로 담아서 리턴해준다. JDBC 3.0을 지원하는 Driver에서만 사용이 가능하다.
queryname - 실행할 SQL의 statement IDparamVO - 파라메터를 담고 있는 ValueObjectnumKeyCols - 리턴해 줄 테이블 컬럼의 개수를 지정한다.
LiveException
public ValueObject executeUpdateReturnKeys(String queryname,
ValueObject paramVO,
int[] columnIndexes)
throws LiveException
Insert Query를 수행하며, 입력된 결과를 리턴한다. 수행할 SQL문의 statement ID와 파라메터를 담고 있는 ValueObject 객체를 받아서 SQL을 수행한 후 테이블에 입력되는 컬럼들 중 columnIndexes로 지정된 위치의 컬럼들의 입력된 값을 ValueObject로 담아서 리턴해준다. JDBC 3.0을 지원하는 Driver에서만 사용이 가능하다.
queryname - 실행할 SQL의 statement IDparamVO - 파라메터를 담고 있는 ValueObjectcolumnIndexes - 리턴해 줄 테이블 컬럼들의 인덱스를 담은 배열
LiveException
public ValueObject executeUpdateReturnKeys(String queryname,
ValueObject paramVO,
String[] columnNames)
throws LiveException
Insert Query를 수행하며, 입력된 결과를 리턴한다. 수행할 SQL문의 statement ID와 파라메터를 담고 있는 ValueObject 객체를 받아서 SQL을 수행한 후 테이블에 입력되는 컬럼들 중 columnNames로 지정된 명칭의 컬럼들로 입력된 값을 ValueObject로 담아서 리턴해준다. JDBC 3.0을 지원하는 Driver에서만 사용이 가능하다.
queryname - 실행할 SQL의 statement IDparamVO - 파라메터를 담고 있는 ValueObjectcolumnNames - 리턴해 줄 테이블 컬럼들의 이름을 배열
LiveException
public ValueObject executeCall(String queryname,
ValueObject paramVO)
throws LiveException
queryname - 실행할 SQL의 statement IDparamVO - 파라메터를 담고 있는 ValueObject
LiveException
public ValueObjectAssembler executeCall(String queryname,
ValueObject paramVO,
String[] rsNames)
throws LiveException
ResultSet을 리턴하거는 Oracle의 REF CURSOR를 OUT으로 반환하는 Stored Procedure를 실행한다. 수행할 Procedure 호출문을 담고 있는 SQL문의 statement ID와 파라메터를 담고 있는 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 객체에 담겨진다.
queryname - 실행할 SQL의 statement IDparamVO - 파라메터를 담고 있는 ValueObjectrsNames - 결과 ValueObject의 이름들을 지정한 배열
LiveException
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||