JdbcTemplate을 활용한 데이터베이스 연동 학습 정리
JDBC와 JdbcTemplate의 이해
1. JDBC (Java Database Connectivity)
- JDBC는 자바에서 데이터베이스에 접속할 수 있게 해주는 API입니다.
- 직접 SQL 쿼리를 실행하고, 결과를 처리하며, 연결을 관리하는 작업을 수행합니다.
- 하지만 코드가 복잡하고 에러 처리가 번거로울 수 있습니다.
2. JdbcTemplate
- JdbcTemplate은 스프링에서 제공하는 템플릿 클래스입니다.
- JDBC의 복잡한 작업을 간편하게 처리할 수 있게 해줍니다.
- 코드가 간결해지고, 예외 처리가 용이해집니다.
- 스프링 JDBC의 핵심으로, 다른 고수준 기능들도 내부적으로 JdbcTemplate을 활용합니다.
주요 기능과 학습 내용
1. 단일 객체 조회 (SELECT)
- queryForObject 메서드를 사용하여 단일 객체를 조회할 수 있습니다.
- SQL 쿼리와 결과를 매핑할 클래스 타입 또는 RowMapper를 지정할 수 있습니다.
- 결과가 하나만 반환되는 경우에 적합합니다.
2. 목록 조회 (SELECT)
- query 메서드를 사용하여 여러 개의 객체를 조회할 수 있습니다.
- RowMapper를 사용하여 결과를 매핑할 수 있습니다.
- 파라미터를 바인딩하여 조건에 맞는 결과를 조회할 수 있습니다.
3. 데이터 수정 (INSERT, UPDATE, DELETE)
- update 메서드를 사용하여 데이터 삽입, 수정, 삭제 작업을 수행할 수 있습니다.
- 쿼리에 파라미터를 바인딩하여 다양한 상황에 유연하게 대응할 수 있습니다.
- KeyHolder를 사용하여 삽입된 데이터의 primary key를 반환받을 수 있습니다.
학습 테스트 수행
1. 데이터 조회 테스트
- count: 테이블의 레코드 수를 조회하는 테스트를 통해 쿼리 결과를 검증할 수 있었습니다.
- getLastName: 특정 id에 해당하는 고객의 성(last name)을 조회하여, 파라미터 바인딩을 학습했습니다.
- findCustomerById: RowMapper를 사용하여 결과를 객체에 매핑하는 방법을 학습했습니다.
2. 목록 조회 테스트
- findAllCustomers: 여러 개의 고객 데이터를 조회하고, 결과를 리스트로 반환받는 방법을 학습했습니다.
- RowMapper를 사용하여 각 행을 객체로 매핑하는 방법을 이해했습니다.
3. 데이터 수정 테스트
- insert: 고객 데이터를 삽입하고, 쿼리에 파라미터를 바인딩하는 방법을 학습했습니다.
- delete: 특정 id를 가진 고객 데이터를 삭제하는 방법을 익혔습니다.
- insertWithKeyHolder: 데이터를 삽입한 후 생성된 primary key를 반환받는 방법을 학습했습니다.
느낀 점
- 편리함: JdbcTemplate을 사용함으로써 코드의 간결함과 유지보수성을 크게 높일 수 있었습니다.
- 안정성: 예외 처리가 간편해지고, 반복적인 JDBC 코드를 줄일 수 있어 개발 생산성이 향상되었습니다.
- 유연성: 다양한 쿼리와 파라미터 바인딩을 쉽게 처리할 수 있어, 복잡한 데이터베이스 연동 작업을 손쉽게 수행할 수 있었습니다.
- 스프링의 강력함: 스프링 프레임워크의 강력한 데이터베이스 연동 지원을 통해, 보다 효율적이고 안정적인 애플리케이션 개발이 가능함을 느꼈습니다.
JdbcTemplate을 활용한 데이터베이스 연동 방법을 익힘으로써, 앞으로 더 복잡하고 다양한 데이터 처리 작업을 효과적으로 수행할 수 있을 것 같습니다. 스프링의 다양한 기능을 잘 활용하여, 보다 안정적이고 유지보수 가능한 코드를 작성하는 데 큰 도움이 될 것입니다.
'멋쟁이사자처럼 동아리 > Level 1,2,3 과제' 카테고리의 다른 글
Level 2 Spring core (0) | 2024.06.23 |
---|---|
Level 2 Spring MVC (0) | 2024.06.22 |
Level 2 환경설정 (0) | 2024.06.22 |
멋쟁이 사자처럼 Lotto - 출처 "우테코" (0) | 2024.05.06 |
멋쟁이 사자처럼 RacingCar - 출처 "우테코" (0) | 2024.05.06 |