홈 › 실무 확장 › 04 / 22

JDBC 기초와 트랜잭션 (H2)

섹션 7진행 0 / 22

7. 정리

  • JDBC 는 인터페이스입니다. 코드는 java.sql.* 만 보고, 드라이버는 ServiceLoader 가 URL 로 고릅니다. URL 만 바꾸면 다른 DB 입니다.
  • 커넥션은 비쌉니다. DataSource(풀)에서 짧게 빌리고 try-with-resources 로 반드시 반납합니다. 풀 고갈은 풀 크기가 아니라 "쥐고 있는 시간"의 문제입니다.
  • 값은 항상 PreparedStatement 의 ? 로. 인젝션 방어이자 실행 계획 재사용입니다. 식별자는 화이트리스트.
  • ResultSet 은 커서입니다. getObject(col, LocalDate.class), getBigDecimal, 원시형 getter 뒤의 wasNull(). 대량 조회는 fetchSize 로 흘려보냅니다.
  • 트랜잭션은 setAutoCommit(false) → SQL 들 → commit(), 예외면 rollback(), 반납 전 원복. 배치 04 의 begin/commit/rollback 이 정확히 이것입니다.
  • 청크 커밋은 addBatch/executeBatch + 청크마다 commit(). 실패 청크는 rollback(), 부분 취소는 Savepoint.
  • SQLException 은 SQLState 로 분기합니다. 23xxx 는 데이터 문제, 42xxx 는 코드 문제.
  • 이 레슨의 SimpleJdbc(query/update/inTransaction)가 Spring JdbcTemplate + TransactionTemplate 의 뼈대입니다. 다음 레슨(MyBatis)은 여기에 "SQL 을 어노테이션에, 결과 매핑을 선언으로" 옮깁니다.