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 Details

  • Method Details

    • 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:
      queryKey - 쿼리 키
      whereClause - where 절
      param - 파라메터
      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:
      queryStmt - SQL 쿼리문장
      param - 파라메터
      Returns:
      검색된 레코드를 표현하는 List
    • findForNavigationPage

      GluePageSet findForNavigationPage(String queryKey, int pageSize, int curPage)
      Page Set 기능을 지원하는 메소드이다. (게시판 형태)
      한 페이지에 display될 Record 개수와 현재 페이지 번호를 지정해 주어야 한다.
      (예, pageSize:15, curPage:5 -> 5페이지에 해당하는 Record 15개를 얻는다.)
      Parameters:
      queryKey - 쿼리 키
      pageSize - 한 화면에 Display 될 로우 개수
      curPage - 현재 페이지 번호
      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:
      queryKey - 쿼리 키
      param - 바인딩 파라메터
      pageSize - 한 화면에 Display 될 로우 개수
      curPage - 현재 페이지 번호
      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:
      queryStmt - SQL 쿼리문장
      pageSize - 한 화면에 Display 될 로우 개수
      curPage - 현재 페이지 번호
      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 개수 배열