Class GlueJdbcDao

All Implemented Interfaces:
GlueGenericDao, GlueGenericJdbcDao, InitializingBean
Direct Known Subclasses:
GlueLazyJdbcDao

public class GlueJdbcDao extends NamedParameterJdbcDaoSupport implements GlueGenericJdbcDao
데이타베이스 CRUD(Create, Read, Update, Delete) 오퍼레이션을 추상화하여 제공하는 Data Access Object 오브젝트.
기본적으로 config path에 위치한 xxx-query.glue_sql 파일에 등록된 Query 문장을 사용하지만, "ByQueryStatement" 로 끝나는 메소드는 명시적으로 Query문장을 파라메터로 넘겨주어야 한다. 내부적으로 Spring Framework의 JdbcTemplate 클래스를 이용하여 DAO 의 오퍼레이션을 구현하였다.
 Bean Property

 - dataSource : (필수) javax.sql.DataSource 

 - queryManager : (필수) com.poscoict.glueframework.dao.manager.GlueQueryManager 

 - columnManager : (선택) com.poscoict.glueframework.dao.manager.GlueColumnManager, default는 null

 - sequence : (선택) com.poscoict.glueframework.dao.sequence.GlueSequence, 
                      default는 자동생성되나 지원되는 DB가 제한적임. 

 - lobHandler (선택) org.springframework.jdbc.support.lob.LobHandler,
                      default는 org.springframework.jdbc.support.lob.DefaultLobHandler

 - typeCast : (선택) boolean( true, false ), default는 false임.

 - batchUpdateLimit : (선택) int, default는 30000

 - fetchSize : (선택) int, default 0

 예제
 
 사용 예# 1

     <bean id="dao" class="com.poscoict.glueframework.dao.jdbc.GlueJdbcDao">
         <property name="dataSource" ref="dataSource"/>
         <property name="queryManager" ref="queryManager"/>
     </bean>
 
  • Field Details

    • queryManager

      protected GlueQueryManager queryManager
      Query Manager
    • sequence

      protected GlueSequence sequence
    • lobHandler

      protected LobHandler lobHandler
      Lob handler for processing lob type
  • Constructor Details

    • GlueJdbcDao

      public GlueJdbcDao()
      생성자(constructor).
  • Method Details

    • createJdbcTemplate

      protected JdbcTemplate createJdbcTemplate(DataSource dataSource)
      Overrides:
      createJdbcTemplate in class JdbcDaoSupport
    • getQueryManager

      public GlueQueryManager getQueryManager()
      Description copied from interface: GlueGenericJdbcDao
      Query Manager를 얻는다.
      Specified by:
      getQueryManager in interface GlueGenericJdbcDao
      Returns:
      Query Manager
    • setQueryManager

      public void setQueryManager(GlueQueryManager queryManager)
      setter method for DI. Query Manager를 설정한다.
      Parameters:
      queryManager - Query Manager
    • setColumnManager

      public void setColumnManager(GlueColumnManager columnManager)
      setter method for DI.
      Parameters:
      columnManager -
    • getColumnManager

      public GlueColumnManager getColumnManager()
      getter method.
      Returns:
      GlueColumnManager
    • setTypeCast

      public void setTypeCast(boolean typeCast)
      setter method for DI.
      Parameters:
      typeCast -
    • getSequence

      public GlueSequence getSequence()
      Description copied from interface: GlueGenericJdbcDao
      데이터베이스 Sequence 값을 핸들링하는 GlueSequence를 획득한다.
      지원되는 DB - Oracle, IBM DB2, PostgreSQL
      Specified by:
      getSequence in interface GlueGenericJdbcDao
      Returns:
      GlueSequence 오브젝트
    • setSequence

      public void setSequence(GlueSequence sequence)
    • setLobHandler

      public void setLobHandler(LobHandler lobHandler)
    • getBatchUpdateLimit

      public int getBatchUpdateLimit()
    • setBatchUpdateLimit

      public void setBatchUpdateLimit(int batchUpdateLimit)
      setter method for DI.
      Parameters:
      batchUpdateLimit -
    • setFetchSize

      public void setFetchSize(int fetchSize)
      setter method for DI.
      Parameters:
      fetchSize -
    • getDatabaseProductName

      public String getDatabaseProductName()
      getter method.
      Returns:
      Database 제품명
    • getDBConnection

      public Connection getDBConnection()
      Connection을 Return 하는 Method 이다. Connection을 이용하여 Statement, PreparedStatement,CallableStatement 등을 사용하는 경우 반드시 해당 자원은 Close 하여야 한다. (Connection은 Glue F/W에서 자동으로 Close 하기 때문에 Close 하지 말아야 한다) Connection은 releaseDBConnection() 를 통해 반납하도록 한다.
      Returns:
      Connection
    • releaseDBConnection

      public void releaseDBConnection(Connection con)
      getDBConnection()을 통해 획득한 Connection을 반납하는 메소드.
      Parameters:
      con - getDBConnection()을 통해 획득한 Connection
    • find

      public <T> List<T> find(String queryKey)
      Description copied from interface: GlueGenericDao
      쿼리 키에 해당하는 Static SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 조건에 해당하는 Database Record를 검색한다.
      Specified by:
      find in interface GlueGenericDao
      Parameters:
      queryKey - 쿼리 키
      Returns:
      검색된 레코드를 표현하는 RowSet
    • find

      public <T, P> List<T> find(String queryKey, GlueParameter<P> param)
      Description copied from interface: GlueGenericDao
      쿼리 키에 해당하는 SQL 쿼리문장을 실행하여 조건에 해당하는 Database Record를 검색한다.
      Specified by:
      find in interface GlueGenericDao
      Parameters:
      queryKey - 쿼리 키
      param - 파라메터
      Returns:
      검색된 레코드를 표현하는 RowSet
    • find

      public <T, P> List<T> find(String queryKey, String whereClause, GlueParameter<P> param)
      Description copied from interface: GlueGenericJdbcDao
      쿼리 키에 해당하는 SQL 쿼리문장에 where 절을 적용하여 조건에 해당하는 Database Record를 검색한다.
      Specified by:
      find in interface GlueGenericJdbcDao
      Parameters:
      queryKey - 쿼리 키
      whereClause - where 절
      param - 파라메터
      Returns:
      검색된 레코드를 표현하는 RowSet
    • findByQueryStatement

      public <T> List<T> findByQueryStatement(String queryStmt)
      Description copied from interface: GlueGenericJdbcDao
      Static SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 조건에 해당하는 Database Record를 검색한다.
       List rowset = dao.findByQueryStatement( "select * from emp" );
       
      Specified by:
      findByQueryStatement in interface GlueGenericJdbcDao
      Parameters:
      queryStmt - SQL 쿼리문장
      Returns:
      검색된 레코드를 표현하는 RowSet
    • findByQueryStatement

      public <T, P> List<T> findByQueryStatement(String queryStmt, GlueParameter<P> param)
      Description copied from interface: GlueGenericJdbcDao
      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);
       
      Specified by:
      findByQueryStatement in interface GlueGenericJdbcDao
      Parameters:
      queryStmt - SQL 쿼리문장
      param - 파라메터
      Returns:
      검색된 레코드를 표현하는 List
    • findForNavigationPage

      public GluePageSet findForNavigationPage(String queryKey, int pageSize, int curPage)
      Description copied from interface: GlueGenericJdbcDao
      Page Set 기능을 지원하는 메소드이다. (게시판 형태)
      한 페이지에 display될 Record 개수와 현재 페이지 번호를 지정해 주어야 한다.
      (예, pageSize:15, curPage:5 -> 5페이지에 해당하는 Record 15개를 얻는다.)
      Specified by:
      findForNavigationPage in interface GlueGenericJdbcDao
      Parameters:
      queryKey - 쿼리 키
      pageSize - 한 화면에 Display 될 로우 개수
      curPage - 현재 페이지 번호
      Returns:
      Display 될 RowSet
    • findForNavigationPage

      public <P> GluePageSet findForNavigationPage(String queryKey, GlueParameter<P> param, int pageSize, int curPage)
      Description copied from interface: GlueGenericJdbcDao
      Page Set 기능을 지원하는 메소드이다. (게시판 형태)
      한 페이지에 display될 Record 개수와 현재 페이지 번호를 지정해 주어야 한다.
      (예, pageSize:15, curPage:5 -> 5페이지에 해당하는 Record 15개를 얻는다.)
      Specified by:
      findForNavigationPage in interface GlueGenericJdbcDao
      Parameters:
      queryKey - 쿼리 키
      param - 바인딩 파라메터
      pageSize - 한 화면에 Display 될 로우 개수
      curPage - 현재 페이지 번호
      Returns:
      Display 될 RowSet
    • findForNavigationPageByQuery

      public GluePageSet findForNavigationPageByQuery(String queryStmt, int pageSize, int curPage)
      Description copied from interface: GlueGenericJdbcDao
      Page Set 기능을 지원하는 메소드이다. (게시판 형태)
      한 페이지에 display될 Record 개수와 현재 페이지 번호를 지정해 주어야 한다.
      (예, pageSize:15, curPage:5 -> 5페이지에 해당하는 Record 15개를 얻는다.)
       GluePageSet rowset = dao.findForNavigationPageByQuery( "select * from emp", 15, 5 );
       
      Specified by:
      findForNavigationPageByQuery in interface GlueGenericJdbcDao
      Parameters:
      queryStmt - SQL 쿼리문장
      pageSize - 한 화면에 Display 될 로우 개수
      curPage - 현재 페이지 번호
      Returns:
      Display 될 RowSet
    • findForNavigationPageByQuery

      public <P> GluePageSet findForNavigationPageByQuery(String queryStmt, GlueParameter<P> param, int pageSize, int curPage)
      Description copied from interface: GlueGenericJdbcDao
      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);
       
      Specified by:
      findForNavigationPageByQuery in interface GlueGenericJdbcDao
      Parameters:
      queryStmt - SQL 쿼리문장
      param - 바인딩 파라메터
      pageSize - 한 화면에 Display 될 로우 개수
      curPage - 현재 페이지 번호
      Returns:
      Display 될 RowSet
    • update

      public int update(String queryKey)
      Description copied from interface: GlueGenericDao
      쿼리 키에 해당하는 Static SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 조건에 해당하는 Database Record를 수정한다.
      Specified by:
      update in interface GlueGenericDao
      Parameters:
      queryKey - 쿼리 키
      Returns:
      수정된 레코드 개수
    • update

      public <P> int update(String queryKey, GlueParameter<P> param)
      Description copied from interface: GlueGenericDao
      쿼리 키에 해당하는 SQL 쿼리문장을 실행하여 조건에 해당하는 Database Record를 수정한다.
      Specified by:
      update in interface GlueGenericDao
      Parameters:
      queryKey - 쿼리 키
      param - 파라메터
      Returns:
      수정된 레코드 개수
    • updateByQueryStatement

      public int updateByQueryStatement(String queryStmt)
      Description copied from interface: GlueGenericJdbcDao
      Static SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 조건에 해당하는 Database Record를 수정한다.
       int dmlCnt = dao.updateByQueryStatement( "update emp set ename='guest' where empno=9999" );
       
      Specified by:
      updateByQueryStatement in interface GlueGenericJdbcDao
      Parameters:
      queryStmt - SQL 쿼리문장
      Returns:
      수정된 레코드 개수
    • updateByQueryStatement

      public <P> int updateByQueryStatement(String queryStmt, GlueParameter<P> param)
      Description copied from interface: GlueGenericJdbcDao
      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);
       
      Specified by:
      updateByQueryStatement in interface GlueGenericJdbcDao
      Parameters:
      queryStmt - SQL 쿼리문장
      param - 파라메터
      Returns:
      수정된 레코드 개수
    • insert

      public int insert(String queryKey)
      Description copied from interface: GlueGenericDao
      쿼리 키에 해당하는 Static SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 Database Record를 생성한다.
      Specified by:
      insert in interface GlueGenericDao
      Parameters:
      queryKey - 쿼리 키
      Returns:
      생성된 레코드 개수
    • insert

      public <P> int insert(String queryKey, GlueParameter<P> param)
      Description copied from interface: GlueGenericDao
      쿼리 키에 해당하는 SQL 쿼리문장을 실행하여 Database Record를 생성한다.
      Specified by:
      insert in interface GlueGenericDao
      Parameters:
      queryKey - 쿼리 키
      param - 파라메터
      Returns:
      생성된 레코드 개수
    • insertByQueryStatement

      public int insertByQueryStatement(String queryStmt)
      Description copied from interface: GlueGenericJdbcDao
      SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 Database Record를 생성한다.
       int dmlCnt = dao.insertByQueryStatement( "insert into emp(EMPNO, ENAME) values(9999,'guest')" );
       
      Specified by:
      insertByQueryStatement in interface GlueGenericJdbcDao
      Parameters:
      queryStmt - SQL 쿼리문장
      Returns:
      생성된 레코드 개수
    • insertByQueryStatement

      public <P> int insertByQueryStatement(String queryStmt, GlueParameter<P> param)
      Description copied from interface: GlueGenericJdbcDao
      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);
       
      Specified by:
      insertByQueryStatement in interface GlueGenericJdbcDao
      Parameters:
      queryStmt - SQL 쿼리문장
      param - 파라메터
      Returns:
      생성된 레코드 개수
    • delete

      public int delete(String queryKey)
      Description copied from interface: GlueGenericDao
      쿼리 키에 해당하는 Static SQL 쿼리(바인딩 변수가 없는 쿼리)를 실행하여 Database Record를 삭제한다.
      Specified by:
      delete in interface GlueGenericDao
      Parameters:
      queryKey - 쿼리 키
      Returns:
      삭제된 레코드 개수
    • delete

      public <P> int delete(String queryKey, GlueParameter<P> param)
      Description copied from interface: GlueGenericDao
      쿼리 키에 해당하는 SQL 쿼리문장을 실행하여 Database Record를 삭제한다.
      Specified by:
      delete in interface GlueGenericDao
      Parameters:
      queryKey - 쿼리 키
      param - 파라메터
      Returns:
      삭제된 레코드 개수
    • deleteByQueryStatement

      public int deleteByQueryStatement(String queryStmt)
      Description copied from interface: GlueGenericJdbcDao
      SQL 쿼리문장을 실행하여 Database Record를 삭제한다.
       int dmlCnt = dao.deleteByQueryStatement( "delete from emp" );
       
      Specified by:
      deleteByQueryStatement in interface GlueGenericJdbcDao
      Parameters:
      queryStmt - SQL 쿼리문장
      Returns:
      삭제된 레코드 개수
    • deleteByQueryStatement

      public <P> int deleteByQueryStatement(String queryStmt, GlueParameter<P> param)
      Description copied from interface: GlueGenericJdbcDao
      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);
       
      Specified by:
      deleteByQueryStatement in interface GlueGenericJdbcDao
      Parameters:
      queryStmt - SQL 쿼리문장
      param - 파라메터
      Returns:
      삭제된 레코드 개수
    • findByQueryDefinitionInternal

      protected <T, P> List<T> findByQueryDefinitionInternal(GlueQueryDefinition def, GlueParameter<P> param)
      Parameters:
      def -
      param -
      Returns:
      List of T
    • handleDataAccessException

      protected GlueDaoException handleDataAccessException(DataAccessException dae)
      JDBC Layer에서 발생하는 DataAccessException을 GlueDaoException으로 변환 시켜준다.
      - BadSqlGrammarException, DataIntegrityViolationException, UncategorizedSQLException
      Parameters:
      dae - DataAccessException
      Returns:
      GlueDaoException JDBC Layer에서 Exception 발생 시
    • batchUpdate

      public <P> int[] batchUpdate(String queryKey, GlueParameter<P>[] params)
      Description copied from interface: GlueGenericJdbcDao
      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을 실행한 결과 로우 개수이다.
      Specified by:
      batchUpdate in interface GlueGenericJdbcDao
      Parameters:
      queryKey - 쿼리 키
      params - GlueParameter Array
      Returns:
      각각의 Statement가 수행된 후 업데이트 된 Row 개수 배열
    • batchUpdateByQueryStatement

      public <P> int[] batchUpdateByQueryStatement(String queryStmt, GlueParameter<P>[] params)
      Description copied from interface: GlueGenericJdbcDao
      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 개수이다.
      Specified by:
      batchUpdateByQueryStatement in interface GlueGenericJdbcDao
      Parameters:
      queryStmt - SQL 쿼리문장
      params - GlueParameter Array
      Returns:
      각각의 Statement가 수행된 후 업데이트 된 Row 개수 배열
    • batchUpdate

      public int[] batchUpdate(String queryKey, GlueParameter<List<?>>[] params, int[] types)
      Description copied from interface: GlueGenericJdbcDao
      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 개수이다.
      Specified by:
      batchUpdate in interface GlueGenericJdbcDao
      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

      public int[] batchUpdate(String queryKey, GlueParameter<Map<?,?>>[] params, Map<String,Integer> types)
      Description copied from interface: GlueGenericJdbcDao
      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 개수이다.
      Specified by:
      batchUpdate in interface GlueGenericJdbcDao
      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

      public int[] batchUpdateByQueryStatement(String queryStmt, GlueParameter<List<?>>[] params, int[] types)
      Description copied from interface: GlueGenericJdbcDao
      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 개수이다.
      Specified by:
      batchUpdateByQueryStatement in interface GlueGenericJdbcDao
      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

      public int[] batchUpdateByQueryStatement(String queryStmt, GlueParameter<Map<?,?>>[] params, Map<String,Integer> types)
      Description copied from interface: GlueGenericJdbcDao
      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 개수이다.
      Specified by:
      batchUpdateByQueryStatement in interface GlueGenericJdbcDao
      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 개수 배열