com.poscoict.glueframework.dao.jdbc
Interface GlueGenericJdbcDao

All Superinterfaces:
GlueGenericDao
All Known Implementing Classes:
GlueJdbcDao, GlueLazyJdbcDao

public interface GlueGenericJdbcDao
extends GlueGenericDao

데이타베이스 CRUD(Create, Read, Update, Delete) 오퍼레이션을 추상화하여 제공하는 Data Access Object 인터페이스. 기본적으로 config path에 위치한 xxx-query.glue_sql 파일에 등록된 Query 문장을 사용하지만, "ByQueryStatement" 로 끝나는 메소드는 명시적으로 Query문장을 파라메터로 넘겨주어야 한다.

 // parameter setting
 List args = new ArrayList();
 args.add("3500");
 GlueParameter<List> param = new GlueParameter<List>(args);
 
 // 1. xxx-query.glue_sql 파일에 등록된 SQL 쿼리문장을 사용 (쿼리 키)
 // <query id="emp.select" desc="사원조회" fetchSize="10">
 //   <![CDATA[
 //     select EMPNO, ENAME, SAL from emp where sal > ?
 //   ]]>
 // </query>
 List rowsetOne = dao.find("emp.select.id", param);
 
 // 2. 명시적인 SQL 쿼리문장을 사용
 List rowsetTwo = dao.findByQueryStatement("select empno, ename, sal from emp where sal > ?", param);
 
 


Field Summary
static int DEFAULT_BATCH_UPDATE_SIZE
           
static int DELETE
          DELETE Operation 상수
static int INSERT
          INSERT Operation 상수
static int SELECT
          SELECT Operation 상수
static int UPDATE
          UPDATE Operation 상수
 
Method Summary
 int[] batchUpdate(String queryKey, GlueParameter<List<?>>[] params, int[] types)
          JDBC 2.0 Specification에 정의된 Batch Update를 실행한다.
 int[] batchUpdate(String queryKey, GlueParameter<Map<?,?>>[] params, Map<String,Integer> types)
          JDBC 2.0 Specification에 정의된 Batch Update를 실행한다.
<P> int[]
batchUpdate(String queryKey, GlueParameter<P>[] params)
          JDBC 2.0 Specification에 정의된 Batch Update를 실행한다.
 int[] batchUpdateByQueryStatement(String queryStmt, GlueParameter<List<?>>[] params, int[] types)
          JDBC 2.0 Specification에 정의된 Batch Update를 실행한다.
 int[] batchUpdateByQueryStatement(String queryStmt, GlueParameter<Map<?,?>>[] params, Map<String,Integer> types)
          JDBC 2.0 Specification에 정의된 Batch Update를 실행한다.
<P> int[]
batchUpdateByQueryStatement(String queryStmt, GlueParameter<P>[] params)
          JDBC 2.0 Specification에 정의된 Batch Update를 실행한다.
 int deleteByQueryStatement(String queryStmt)
          SQL 쿼리문장을 실행하여 Database Record를 삭제한다.
<P> int
deleteByQueryStatement(String queryStmt, GlueParameter<P> param)
          SQL 쿼리문장을 실행하여 Database Record를 삭제한다.
<T,P> List<T>
find(String queryKey, String whereClause, GlueParameter<P> param)
          쿼리 키에 해당하는 SQL 쿼리문장에 where 절을 적용하여 조건에 해당하는 Database Record를 검색한다.
<T> List<T>
findByQueryStatement(String queryStmt)
          Static SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 조건에 해당하는 Database Record를 검색한다.
<T,P> List<T>
findByQueryStatement(String queryStmt, GlueParameter<P> param)
          SQL 쿼리문장을 실행하여 조건에 해당하는 Database Record를 검색한다.
<P> GluePageSet
findForNavigationPage(String queryKey, GlueParameter<P> param, int pageSize, int curPage)
          Page Set 기능을 지원하는 메소드이다.
 GluePageSet findForNavigationPage(String queryKey, int pageSize, int curPage)
          Page Set 기능을 지원하는 메소드이다.
<P> GluePageSet
findForNavigationPageByQuery(String queryStmt, GlueParameter<P> param, int pageSize, int curPage)
          Page Set 기능을 지원하는 메소드이다.
 GluePageSet findForNavigationPageByQuery(String queryStmt, int pageSize, int curPage)
          Page Set 기능을 지원하는 메소드이다.
 GlueQueryManager getQueryManager()
          Query Manager를 얻는다.
 GlueSequence getSequence()
          데이터베이스 Sequence 값을 핸들링하는 GlueSequence를 획득한다.
 int insertByQueryStatement(String queryStmt)
          SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 Database Record를 생성한다.
<P> int
insertByQueryStatement(String queryStmt, GlueParameter<P> param)
          SQL 쿼리문장을 실행하여 Database Record를 생성한다.
 int updateByQueryStatement(String queryStmt)
          Static SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 조건에 해당하는 Database Record를 수정한다.
<P> int
updateByQueryStatement(String queryStmt, GlueParameter<P> param)
          SQL 쿼리문장을 실행하여 조건에 해당하는 Database Record를 수정한다.
 
Methods inherited from interface com.poscoict.glueframework.dao.GlueGenericDao
delete, delete, find, find, insert, insert, update, update
 

Field Detail

SELECT

static final int SELECT
SELECT Operation 상수

See Also:
Constant Field Values

UPDATE

static final int UPDATE
UPDATE Operation 상수

See Also:
Constant Field Values

INSERT

static final int INSERT
INSERT Operation 상수

See Also:
Constant Field Values

DELETE

static final int DELETE
DELETE Operation 상수

See Also:
Constant Field Values

DEFAULT_BATCH_UPDATE_SIZE

static final int DEFAULT_BATCH_UPDATE_SIZE
See Also:
Constant Field Values
Method Detail

getQueryManager

GlueQueryManager getQueryManager()
Query Manager를 얻는다.

Returns:
Query Manager

getSequence

GlueSequence getSequence()
데이터베이스 Sequence 값을 핸들링하는 GlueSequence를 획득한다.
지원되는 DB - Oracle, IBM DB2, PostgreSQL

Returns:
GlueSequence 오브젝트

deleteByQueryStatement

int deleteByQueryStatement(String queryStmt)
SQL 쿼리문장을 실행하여 Database Record를 삭제한다.
 int dmlCnt = dao.deleteByQueryStatement( "delete from emp" );
 

Parameters:
queryStmt - SQL 쿼리문장
Returns:
삭제된 레코드 개수

deleteByQueryStatement

<P> int deleteByQueryStatement(String queryStmt,
                               GlueParameter<P> param)
SQL 쿼리문장을 실행하여 Database Record를 삭제한다.
 List args = new ArrayList();
 args.add("10");
 GlueParameter<List> param = new GlueParameter<List>(args);
 int dmlCnt = dao.deleteByQueryStatement("delete from emp where deptno=?", param);
 
 

Parameters:
queryStmt - SQL 쿼리문장
param - 파라메터
Returns:
삭제된 레코드 개수

find

<T,P> List<T> find(String queryKey,
                   String whereClause,
                   GlueParameter<P> param)
쿼리 키에 해당하는 SQL 쿼리문장에 where 절을 적용하여 조건에 해당하는 Database Record를 검색한다.

Parameters:
param - 파라메터
whereClause - where 절
queryKey - 쿼리 키
Returns:
검색된 레코드를 표현하는 RowSet

findByQueryStatement

<T> List<T> findByQueryStatement(String queryStmt)
Static SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 조건에 해당하는 Database Record를 검색한다.
 List rowset = dao.findByQueryStatement( "select * from emp" );
 

Parameters:
queryStmt - SQL 쿼리문장
Returns:
검색된 레코드를 표현하는 RowSet

findByQueryStatement

<T,P> List<T> findByQueryStatement(String queryStmt,
                                   GlueParameter<P> param)
SQL 쿼리문장을 실행하여 조건에 해당하는 Database Record를 검색한다.
 List args = new ArrayList();
 args.add("9999");
 GlueParameter<List> param = new GlueParameter<List>(args);
 List rowset = dao.findByQueryStatement("select * from emp where empno=?", param);
 
 

Parameters:
param - 파라메터
queryStmt - SQL 쿼리문장
Returns:
검색된 레코드를 표현하는 List

findForNavigationPage

GluePageSet findForNavigationPage(String queryKey,
                                  int pageSize,
                                  int curPage)
Page Set 기능을 지원하는 메소드이다. (게시판 형태)
한 페이지에 display될 Record 개수와 현재 페이지 번호를 지정해 주어야 한다.
(예, pageSize:15, curPage:5 -> 5페이지에 해당하는 Record 15개를 얻는다.)

Parameters:
curPage - 현재 페이지 번호
pageSize - 한 화면에 Display 될 로우 개수
queryKey - 쿼리 키
Returns:
Display 될 RowSet

findForNavigationPage

<P> GluePageSet findForNavigationPage(String queryKey,
                                      GlueParameter<P> param,
                                      int pageSize,
                                      int curPage)
Page Set 기능을 지원하는 메소드이다. (게시판 형태)
한 페이지에 display될 Record 개수와 현재 페이지 번호를 지정해 주어야 한다.
(예, pageSize:15, curPage:5 -> 5페이지에 해당하는 Record 15개를 얻는다.)

Parameters:
curPage - 현재 페이지 번호
pageSize - 한 화면에 Display 될 로우 개수
param - 바인딩 파라메터
queryKey - 쿼리 키
Returns:
Display 될 RowSet

findForNavigationPageByQuery

GluePageSet findForNavigationPageByQuery(String queryStmt,
                                         int pageSize,
                                         int curPage)
Page Set 기능을 지원하는 메소드이다. (게시판 형태)
한 페이지에 display될 Record 개수와 현재 페이지 번호를 지정해 주어야 한다.
(예, pageSize:15, curPage:5 -> 5페이지에 해당하는 Record 15개를 얻는다.)
 GluePageSet rowset = dao.findForNavigationPageByQuery( "select * from emp", 15, 5 );
 

Parameters:
curPage - 현재 페이지 번호
pageSize - 한 화면에 Display 될 로우 개수
queryStmt - SQL 쿼리문장
Returns:
Display 될 RowSet

findForNavigationPageByQuery

<P> GluePageSet findForNavigationPageByQuery(String queryStmt,
                                             GlueParameter<P> param,
                                             int pageSize,
                                             int curPage)
Page Set 기능을 지원하는 메소드이다. (게시판 형태)
한 페이지에 display될 Record 개수와 현재 페이지 번호를 지정해 주어야 한다.
(예, pageSize:15, curPage:5 -> 5페이지에 해당하는 Record 15개를 얻는다.)
 List args = new ArrayList();
 args.add("10");
 GlueParameter<List> param = new GlueParameter<List>(args);
 GluePageSet rowset = dao.findForNavigationPageByQuery("select * from emp where deptno=?", param, 15, 5);
 
 

Parameters:
queryStmt - SQL 쿼리문장
param - 바인딩 파라메터
pageSize - 한 화면에 Display 될 로우 개수
curPage - 현재 페이지 번호
Returns:
Display 될 RowSet

insertByQueryStatement

int insertByQueryStatement(String queryStmt)
SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 Database Record를 생성한다.
 int dmlCnt = dao.insertByQueryStatement( "insert into emp(EMPNO, ENAME) values(9999,'guest')" );
 

Parameters:
queryStmt - SQL 쿼리문장
Returns:
생성된 레코드 개수

insertByQueryStatement

<P> int insertByQueryStatement(String queryStmt,
                               GlueParameter<P> param)
SQL 쿼리문장을 실행하여 Database Record를 생성한다.
 List args = new ArrayList();
 args.add("9999");
 args.add("guest");
 GlueParameter<List> param = new GlueParameter<List>(args);
 int dmlCnt = dao.insertByQueryStatement("insert into emp(EMPNO, ENAME) values(?,?)", param);
 
 

Parameters:
queryStmt - SQL 쿼리문장
param - 파라메터
Returns:
생성된 레코드 개수

updateByQueryStatement

int updateByQueryStatement(String queryStmt)
Static SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 조건에 해당하는 Database Record를 수정한다.
 int dmlCnt = dao.updateByQueryStatement( "update emp set ename='guest' where empno=9999" );
 

Parameters:
queryStmt - SQL 쿼리문장
Returns:
수정된 레코드 개수

updateByQueryStatement

<P> int updateByQueryStatement(String queryStmt,
                               GlueParameter<P> param)
SQL 쿼리문장을 실행하여 조건에 해당하는 Database Record를 수정한다.
 List args = new ArrayList();
 args.add("guest");
 args.add("9999");
 GlueParameter<List> param = new GlueParameter<List>(args);
 int dmlCnt = dao.updateByQueryStatement("update emp set ename=? where empno=?", param);
 
 

Parameters:
queryStmt - SQL 쿼리문장
param - 파라메터
Returns:
수정된 레코드 개수

batchUpdate

<P> int[] batchUpdate(String queryKey,
                      GlueParameter<P>[] params)
JDBC 2.0 Specification에 정의된 Batch Update를 실행한다. JDBC 드라이버가 batch update를 지원하지 않으면 일반 Update가 실행된다. 사용 방법은 아래 참조.
 final int count = 10;
 // batch update를 위한 GlueParameter 객체 배열 생성
 GlueParameter<List>[] params = new GlueParameter<List>[count];
 for (int i=0; i<params.length; i++)
 {
     List args = new ArrayList();
     args.add(dao.getSequence().getNextStringValue("SQ_NAME"));
     args.add("value");
     params[i] = new GlueParameter<List>(args);
 }
 int[] results = dao.batchUpdate("query-key", params);
 
 
쿼리 종류가 서로 다르다면 각각 batchUpdate 메소드를 호출하면 된다. 리턴되는 결과 값은 sql을 실행한 결과 로우 개수이다.

Parameters:
queryKey - 쿼리 키
params - GlueParameter Array
Returns:
각각의 Statement가 수행된 후 업데이트 된 Row 개수 배열

batchUpdateByQueryStatement

<P> int[] batchUpdateByQueryStatement(String queryStmt,
                                      GlueParameter<P>[] params)
JDBC 2.0 Specification에 정의된 Batch Update를 실행한다. JDBC 드라이버가 batch update를 지원하지 않으면 일반 Update가 실행된다. 사용 방법은 아래 참조.
 final int count = 10;
 // batch update를 위한 GlueParameter 객체 배열 생성
 GlueParameter<List>[] params = new GlueParameter<List>[count];
 for (int i=0; i<params.length; i++)
 {
     List args = new ArrayList();
     args.add(dao.getSequence().getNextStringValue("SQ_NAME"));
     args.add("value");
     params[i] = new GlueParameter<List>(args);
 }
 int[] results = dao.batchUpdateByQueryStatement("update <table> set <column1>=? where <column2>=?", params);
 
 
쿼리 종류가 서로 다르다면 각각 batchUpdate 메소드를 호출하면 된다. 리턴되는 결과 값은 sql을 실행한 결과 Row 개수이다.

Parameters:
queryStmt - SQL 쿼리문장
params - GlueParameter Array
Returns:
각각의 Statement가 수행된 후 업데이트 된 Row 개수 배열

batchUpdate

int[] batchUpdate(String queryKey,
                  GlueParameter<List<?>>[] params,
                  int[] types)
JDBC 2.0 Specification에 정의된 Batch Update를 실행한다. JDBC 드라이버가 batch update를 지원하지 않으면 일반 Update가 실행된다. 사용 방법은 아래 참조.
 
 int size = 10;
 // batch update를 위한 GlueParameter 객체 배열 생성
 GlueParameter<List<?>>[] params = new GlueParameter[size];
 for (int i=0; i<size; i++)
 {
     List args = new ArrayList();
     args.add(dao.getSequence().getNextStringValue("SQ_NAME"));
     args.add(obj1); // java.util.Date 
     args.add(obj2); // java.io.File
     args.add(obj3); // byte[]
     args.add(obj4); // java.io.InputStream
     args.add(obj5); // String, obj5.length() > 32765 인경우임.
     params[i] = new GlueParameter<List<?>>(args);
 }
 int types[] = {Types.VARCHAR, Types.TIMESTAMP, Types.BLOB, Types.BLOB, Types.BLOB, Types.CLOB}
 int[] results = dao.batchUpdate("query-key", params, types);
 
 
쿼리 종류가 서로 다르다면 각각 batchUpdate 메소드를 호출하면 된다. 리턴되는 결과 값은 sql을 실행한 결과 Row 개수이다.

Parameters:
queryKey - 쿼리 키
params - GlueParameter<List> Array
types - java.sql.Types 의 배열, data이 java.util.Date 형이면 Types.TIMESTAMP 으로하고, data가 java.io.File, byte[], java.io.InputStream 형이면 Types.BLOB으로 하고, data가 32765보다 큰 String이면 Types.CLOB으로 하고, 그외는 Types.VARCHAR로 한다.
Returns:
각각의 Statement가 수행된 후 업데이트 된 Row 개수 배열

batchUpdate

int[] batchUpdate(String queryKey,
                  GlueParameter<Map<?,?>>[] params,
                  Map<String,Integer> types)
JDBC 2.0 Specification에 정의된 Batch Update를 실행한다. JDBC 드라이버가 batch update를 지원하지 않으면 일반 Update가 실행된다. 사용 방법은 아래 참조.
 
 int size = 10;
 // batch update를 위한 GlueParameter 객체 배열 생성
 GlueParameter<Map<?,?>>[] params = new GlueParameter[size];
 for (int i=0; i<size; i++)
 {
     Map args = new HashMap();
     args.put("name0", (dao.getSequence().getNextStringValue("SQ_NAME"));
     args.put("name1", obj1); // java.util.Date 
     args.put("name2", obj2); // java.io.File
     args.put("name3", obj3); // byte[]
     args.put("name4", obj4); // java.io.InputStream
     args.put("name5", obj5); // String, obj5.length() > 32765 인경우임.
     params[i] = new GlueParameter<Map<?,?>>(args);
 }
 Map types = new HashMap();
 types.put("name0", Types.VARCHAR);
 types.put("name1", Types.TIMESTAMP);
 types.put("name2", Types.BLOB);
 types.put("name3", Types.BLOB);
 types.put("name4", Types.BLOB);
 types.put("name5", Types.CLOB);
 int[] results = dao.batchUpdate("query-key", params, types);
 
 
쿼리 종류가 서로 다르다면 각각 batchUpdate 메소드를 호출하면 된다. 리턴되는 결과 값은 sql을 실행한 결과 Row 개수이다.

Parameters:
queryKey - 쿼리 키
params - GlueParameter<Map> Array
types - java.sql.Types 의 Map, data이 java.util.Date 형이면 Types.TIMESTAMP 으로하고, data가 java.io.File, byte[], java.io.InputStream 형이면 Types.BLOB으로 하고, data가 32765보다 큰 String이면 Types.CLOB으로 하고, 그외는 Types.VARCHAR로 한다.
Returns:
각각의 Statement가 수행된 후 업데이트 된 Row 개수 배열

batchUpdateByQueryStatement

int[] batchUpdateByQueryStatement(String queryStmt,
                                  GlueParameter<List<?>>[] params,
                                  int[] types)
JDBC 2.0 Specification에 정의된 Batch Update를 실행한다. JDBC 드라이버가 batch update를 지원하지 않으면 일반 Update가 실행된다. 사용 방법은 아래 참조.
 
 int size = 10;
 // batch update를 위한 GlueParameter 객체 배열 생성
 GlueParameter<List<?>>[] params = new GlueParameter[size];
 for (int i=0; i<size; i++)
 {
     List args = new ArrayList();
     args.add(dao.getSequence().getNextStringValue("SQ_NAME"));
     args.add(obj1); // java.util.Date 
     args.add(obj2); // java.io.File
     args.add(obj3); // byte[]
     args.add(obj4); // java.io.InputStream
     args.add(obj5); // String, obj5.length() > 32765 인경우임.
     params[i] = new GlueParameter<List<?>>(args);
 }
 int types[] = {Types.VARCHAR, Types.TIMESTAMP, Types.BLOB, Types.BLOB, Types.BLOB, Types.CLOB}
 int[] results = dao.batchUpdateByQueryStatement("insert into <table> values (?, ?, ?, ?, ?, ?)", params, types);
 
 

쿼리 종류가 서로 다르다면 각각 batchUpdate 메소드를 호출하면 된다. 리턴되는 결과 값은 sql을 실행한 결과 Row 개수이다.

Parameters:
queryStmt - SQL 쿼리문장
params - GlueParameter<List> Array
types - java.sql.Types 의 배열, data이 java.util.Date 형이면 Types.TIMESTAMP 으로하고, data가 java.io.File, byte[], java.io.InputStream 형이면 Types.BLOB으로 하고, data가 32765보다 큰 String이면 Types.CLOB으로 하고, 그외는 Types.VARCHAR로 한다.
Returns:
각각의 Statement가 수행된 후 업데이트 된 Row 개수 배열

batchUpdateByQueryStatement

int[] batchUpdateByQueryStatement(String queryStmt,
                                  GlueParameter<Map<?,?>>[] params,
                                  Map<String,Integer> types)
JDBC 2.0 Specification에 정의된 Batch Update를 실행한다. JDBC 드라이버가 batch update를 지원하지 않으면 일반 Update가 실행된다. 사용 방법은 아래 참조.
 
 int size = 10;
 // batch update를 위한 GlueParameter 객체 배열 생성
 GlueParameter<Map<?,?>>[] params = new GlueParameter[size];
 for (int i=0; i<size; i++)
 {
     Map args = new HashMap();
     args.add("name0", dao.getSequence().getNextStringValue("SQ_NAME"));
     args.add("name1", obj1); // java.util.Date 
     args.add("name2", obj2); // java.io.File
     args.add("name3", obj3); // byte[]
     args.add("name4", obj4); // java.io.InputStream
     args.add("name5", obj5); // String, obj5.length() > 32765 인경우임.
     params[i] = new GlueParameter<Map<?,?>>(args);
 }
 Map types = new HashMap();
 types.put("name0", Types.VARCHAR);
 types.put("name1", Types.TIMESTAMP);
 types.put("name2", Types.BLOB);
 types.put("name3", Types.BLOB);
 types.put("name4", Types.BLOB);
 types.put("name5", Types.CLOB);
 int[] results = dao.batchUpdateByQueryStatement("insert into <table> values (:name0, :name1, :name2, :name3, :name4, :name5)", params, types);
 
 
쿼리 종류가 서로 다르다면 각각 batchUpdate 메소드를 호출하면 된다. 리턴되는 결과 값은 sql을 실행한 결과 Row 개수이다.

Parameters:
queryStmt - SQL 쿼리문장
params - GlueParameter<Map> Array
types - java.sql.Types 의 Map, data이 java.util.Date 형이면 Types.TIMESTAMP 으로하고, data가 java.io.File, byte[], java.io.InputStream 형이면 Types.BLOB으로 하고, data가 32765보다 큰 String이면 Types.CLOB으로 하고, 그외는 Types.VARCHAR로 한다.
Returns:
각각의 Statement가 수행된 후 업데이트 된 Row 개수 배열


Copyright © 2013–2017 POSCO ICT. All rights reserved.