프로젝트 요건중
1. 대량건수 Select
2. 한번의 Select에서 한건의 데이타 조회
3. 성능 이슈 있음 - Migration의 용도도 사용
적당한게 뭐 없나 열심히 찾아보고 테스트 하는 시간이 더 많이 걸린듯.
일단 Select라 배치형태의 처리는 힘들고, Rowset을 사용해 볼까도 했지만,
MariaDB 의 JDBC 가 지원안한것 같아 고민하던중 다음과 같은 옵션 발견
allowMultiQueries=true |
그 옵션을 활용한 Multi Select 예제
Connection conn = null; PreparedStatement ps = null; int paramCount = oriDataArry.length; String [] returnData = new String[paramCount]; try { conn = ds.getConnection(); // MariaDB의 DB Connection Option중 allowMultiQueries=true 설정되어 있어야 가능. String queryStr = "SELECT ENC_DATA FROM TOKEN_ENC_MAPPING WHERE DESTINATION_NAME = ? AND DATA_CODE = ? AND TOKEN = ?;"; StringBuffer queryStrBuff = new StringBuffer(); for (int i = 0 ; i < paramCount ; i++) { queryStrBuff.append(queryStr); } ps = conn.prepareStatement(queryStrBuff.toString()); // oriData Array for (int i = 0 ; i < paramCount ; i++) { ps.setString(1+(i*3), destinationName); ps.setString(2+(i*3), bizKey); ps.setString(3+(i*3), oriDataArry[i]); } boolean success = ps.execute(); logger.debug("복호화를 위한 암호화값 조회 성공 여부 : {}" , success); int resultCount = 0; do { logger.debug("결과 조회 {}번째",resultCount); ResultSet resultSet = ps.getResultSet(); if (resultSet.next()) { returnData[resultCount] = resultSet.getString("ENC_DATA"); } else { returnData[resultCount] = null; } resultCount++; } while(ps.getMoreResults()); } catch (SQLException se) { logger.error("DB SQLException 발생", se); se.printStackTrace(); } finally { try { ps.close(); } catch (SQLException se1){} try { conn.close(); } catch (SQLException se1){} } return returnData;
'프로젝트 > 예제 및 샘플' 카테고리의 다른 글
SAP GUI에서 RFC Destination 설정 (0) | 2014.09.12 |
---|