반응형
Spring과 JdbcTemplate을 사용하여 MySQL에서 테이블의 각 행을 살펴 보려고합니다. 내가 착각하지 않았다면 다음과 같이 간단해야합니다.
JdbcTemplate template = new JdbcTemplate(datasource);
template.setFetchSize(1);
// template.setFetchSize(Integer.MIN_VALUE) does not work either
template.query("SELECT * FROM cdr", new RowCallbackHandler() {
public void processRow(ResultSet rs) throws SQLException {
System.out.println(rs.getString("src"));
}
});
전체를 읽으려고하기 때문에 OutOfMemoryError가 발생합니다. 어떤 아이디어?
해결 방법
데이터베이스에서 가져와야하는 행 수에 대한 힌트 를 JDBC 드라이버에 제공
이 기능을 사용하려면 다음과 같은 방식으로 Statement 인스턴스를 만들어야합니다.
stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); stmt.setFetchSize(Integer.MIN_VALUE);
문서의 전체 섹션을 읽으십시오.이 방법의주의 사항도 설명되어 있습니다.
그러나 Spring에서 작동하도록하려면 사용자 정의 구현으로 JdbcTemplate을 확장 / 오버라이드해야합니다. 내가 Spring을하지 않기 때문에 이것에 대해 자세히 설명 할 수는 없지만 이제는 적어도 어디를보아야하는지 알고 있습니다.
행운을 빕니다.
참조 페이지 https://stackoverflow.com/questions/2095490
반응형
'MySql' 카테고리의 다른 글
MySQL은 데이터베이스 파일을 어디에 저장합니까? (0) | 2020.12.14 |
---|---|
MySQL 교리-준비된 문장 만이 아니라 실제 SQL을 어떻게 인쇄 할 것인가? (0) | 2020.12.14 |
MySQL DATETIME 필드의 GROUP BY 월 (0) | 2020.12.14 |
MySQL 데이터베이스에서 현재 날짜를 가져 오는 MySQL 쿼리? (0) | 2020.12.14 |
MySQL 데이터베이스에 PHP 삽입이 작동하지 않음 (0) | 2020.12.14 |
댓글