JDBC ResultSet 기본기능
JDBC(Java Database Connectivity)
자바 프로그램에서 데이터베이스와의 연결을 관리하고 SQL 쿼리를 실행하기 위한 자바 API
ResultSet?
JDBC에서 쿼리 결과를 나타내는 인터페이스
ResultSet 객체는 데이터베이스에서 실행된 SELECT 쿼리 집합을 나타냄
행과 열의 형태 -> 행 : 레코드 열 : 레코드의 필드
ResultSet이 open 될 때마다 database의 데이터 return
DB 커넥션 후 데이터를 Streaming 해서 보냄.
Cursor를 한칸씩 옮기며 데이터를 가져옴.
.afterPropertiesSet()
spring bean의 초기화를 위해 InitializingBean 상속 메서드
빈의 속성들이 설정된 후 이 메소드 호출되어 빈을 추가로 초기화할 수 있다. (객체 초기화)
--> 의존관계가 끝나면 호출해주겠다는 의미
.setSaveState(true)
빈의 상태를 저장할지 여부 지정.
빈의 상태를 저장하는것은 스프링 배치에서 일괄 처리 작업을 수행하는 동안 빈의 상태를 유지하고,
실패시 다시 시작하는데 도움. -> 작업이 중간에 중단되거나 실패한 경우 이전상태로부터 다시 시작
페이지라는 Chunk로 Database에서 데이터 검색
페이지 단위(PageSize = ChunkSize)로 한번에 데이터 조회
여러 쿼리를 실행해 각 쿼리가 지정한 PageSize만큼 한번에 가져옴
페이징은 offset(행번호), 페이지에서 반환할 행 수 (limit) 을 지정
-> Spring batch에서는 offset, limit을 pageSize에 맞게 자동 생성
--> 하지만 각 쿼리는 개별적으로 실행
---> 각 페이지마다 새로운 쿼리를 실행하므로 order by가 중요하다.
Spring batch => Chunk 지향 처리.
Chunk 단위로 트랜잭션 다룸. -> 롤백허용
읽고 처리해야할 아이템이 많을때, 트랜잭션을 한번에 이어가는 것 보다 일정 주기로 여러번 실행하는 것이 안정적.
Cursor는 하나의 Connection으로 Batch가 끝날때까지 사용되어 Batch가 끝나기전에
Database와 application의 Connection이 먼저 끊어질 수 있어 위험