Interface GlueGenericJdbcDao
- All Superinterfaces:
GlueGenericDao
- All Known Implementing Classes:
GlueJdbcDao
,GlueLazyJdbcDao
데이타베이스 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
FieldsModifier and TypeFieldDescriptionstatic final int
static final int
DELETE Operation 상수static final int
INSERT Operation 상수static final int
SELECT Operation 상수static final int
UPDATE Operation 상수 -
Method Summary
Modifier and TypeMethodDescriptionint[]
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를 검색한다.findForNavigationPage
(String queryKey, int pageSize, int curPage) Page Set 기능을 지원하는 메소드이다.<P> GluePageSet
findForNavigationPage
(String queryKey, GlueParameter<P> param, int pageSize, int curPage) Page Set 기능을 지원하는 메소드이다.findForNavigationPageByQuery
(String queryStmt, int pageSize, int curPage) Page Set 기능을 지원하는 메소드이다.<P> GluePageSet
findForNavigationPageByQuery
(String queryStmt, GlueParameter<P> param, int pageSize, int curPage) Page Set 기능을 지원하는 메소드이다.Query Manager를 얻는다.데이터베이스 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를 수정한다.
-
Field Details
-
SELECT
static final int SELECTSELECT Operation 상수- See Also:
-
UPDATE
static final int UPDATEUPDATE Operation 상수- See Also:
-
INSERT
static final int INSERTINSERT Operation 상수- See Also:
-
DELETE
static final int DELETEDELETE Operation 상수- See Also:
-
DEFAULT_BATCH_UPDATE_SIZE
static final int DEFAULT_BATCH_UPDATE_SIZE- See Also:
-
-
Method Details
-
getQueryManager
GlueQueryManager getQueryManager()Query Manager를 얻는다.- Returns:
- Query Manager
-
getSequence
GlueSequence getSequence()데이터베이스 Sequence 값을 핸들링하는 GlueSequence를 획득한다.
지원되는 DB - Oracle, IBM DB2, PostgreSQL- Returns:
- GlueSequence 오브젝트
-
deleteByQueryStatement
SQL 쿼리문장을 실행하여 Database Record를 삭제한다.int dmlCnt = dao.deleteByQueryStatement( "delete from emp" );
- Parameters:
queryStmt
- SQL 쿼리문장- Returns:
- 삭제된 레코드 개수
-
deleteByQueryStatement
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
쿼리 키에 해당하는 SQL 쿼리문장에 where 절을 적용하여 조건에 해당하는 Database Record를 검색한다.- Parameters:
queryKey
- 쿼리 키whereClause
- where 절param
- 파라메터- Returns:
- 검색된 레코드를 표현하는 RowSet
-
findByQueryStatement
Static SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 조건에 해당하는 Database Record를 검색한다.List rowset = dao.findByQueryStatement( "select * from emp" );
- Parameters:
queryStmt
- SQL 쿼리문장- Returns:
- 검색된 레코드를 표현하는 RowSet
-
findByQueryStatement
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:
queryStmt
- SQL 쿼리문장param
- 파라메터- Returns:
- 검색된 레코드를 표현하는 List
-
insertByQueryStatement
SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 Database Record를 생성한다.int dmlCnt = dao.insertByQueryStatement( "insert into emp(EMPNO, ENAME) values(9999,'guest')" );
- Parameters:
queryStmt
- SQL 쿼리문장- Returns:
- 생성된 레코드 개수
-
insertByQueryStatement
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
Static SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 조건에 해당하는 Database Record를 수정한다.int dmlCnt = dao.updateByQueryStatement( "update emp set ename='guest' where empno=9999" );
- Parameters:
queryStmt
- SQL 쿼리문장- Returns:
- 수정된 레코드 개수
-
updateByQueryStatement
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
JDBC 2.0 Specification에 정의된 Batch Update를 실행한다. JDBC 드라이버가 batch update를 지원하지 않으면 일반 Update가 실행된다. 사용 방법은 아래 참조.
쿼리 종류가 서로 다르다면 각각 batchUpdate 메소드를 호출하면 된다. 리턴되는 결과 값은 sql을 실행한 결과 로우 개수이다.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);
- Parameters:
queryKey
- 쿼리 키params
- GlueParameter Array- Returns:
- 각각의 Statement가 수행된 후 업데이트 된 Row 개수 배열
-
batchUpdateByQueryStatement
JDBC 2.0 Specification에 정의된 Batch Update를 실행한다. JDBC 드라이버가 batch update를 지원하지 않으면 일반 Update가 실행된다. 사용 방법은 아래 참조.
쿼리 종류가 서로 다르다면 각각 batchUpdate 메소드를 호출하면 된다. 리턴되는 결과 값은 sql을 실행한 결과 Row 개수이다.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);
- Parameters:
queryStmt
- SQL 쿼리문장params
- GlueParameter Array- Returns:
- 각각의 Statement가 수행된 후 업데이트 된 Row 개수 배열
-
batchUpdate
JDBC 2.0 Specification에 정의된 Batch Update를 실행한다. JDBC 드라이버가 batch update를 지원하지 않으면 일반 Update가 실행된다. 사용 방법은 아래 참조.
쿼리 종류가 서로 다르다면 각각 batchUpdate 메소드를 호출하면 된다. 리턴되는 결과 값은 sql을 실행한 결과 Row 개수이다.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);
- Parameters:
queryKey
- 쿼리 키params
- GlueParameter<List> Arraytypes
- 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
JDBC 2.0 Specification에 정의된 Batch Update를 실행한다. JDBC 드라이버가 batch update를 지원하지 않으면 일반 Update가 실행된다. 사용 방법은 아래 참조.
쿼리 종류가 서로 다르다면 각각 batchUpdate 메소드를 호출하면 된다. 리턴되는 결과 값은 sql을 실행한 결과 Row 개수이다.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);
- Parameters:
queryKey
- 쿼리 키params
- GlueParameter<Map> Arraytypes
- 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
JDBC 2.0 Specification에 정의된 Batch Update를 실행한다. JDBC 드라이버가 batch update를 지원하지 않으면 일반 Update가 실행된다. 사용 방법은 아래 참조.
쿼리 종류가 서로 다르다면 각각 batchUpdate 메소드를 호출하면 된다. 리턴되는 결과 값은 sql을 실행한 결과 Row 개수이다.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);
- Parameters:
queryStmt
- SQL 쿼리문장params
- GlueParameter<List> Arraytypes
- 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가 실행된다. 사용 방법은 아래 참조.
쿼리 종류가 서로 다르다면 각각 batchUpdate 메소드를 호출하면 된다. 리턴되는 결과 값은 sql을 실행한 결과 Row 개수이다.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);
- Parameters:
queryStmt
- SQL 쿼리문장params
- GlueParameter<Map> Arraytypes
- 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 개수 배열
-