JDBC(Spring JDBC)란?
JDBC (Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있는 API(응용 프로그래밍 인터페이스)입니다.
JDBC는 데이터베이스와의 통신을 가능하게 하며, 데이터베이스에서 데이터를 가져오거나 변경할 수 있는 기능을 제공한다.
즉 JDBC를 사용하면 Java 애플리케이션에서 데이터베이스에 접근하여 데이터를 검색, 삽입, 갱신, 삭제할 수 있다.
그러면 Spring JDBC는?
Spring JDBC는 Spring Framework에서 제공하는 JDBC 모듈이다.
조금 어렵게 말하면 Spring Framwork에서 제공하는 JDBC 추상화 라이브러리 이다.
Spring JDBC는 JDBC 코드를 간결하게 작성하고, 더 수비게 데이터베이스에 연결하고, 더 쉽게 데이터베이스와 상호 작용할 수 있도록 돕는다.
두 줄로 정리하면 ↓ 이렇다.
Spring JDBC를 사용하는 이유
1. JDBC를 사용하여 데이터베이스와 상호 작용하는 과정을 단순화하고,
2. 보다 간편하게 데이터베이스를 다룰 수 있다.
Spring JDBC를 사용하면 더욱 효율적이고 안전하며 유지 보수가 쉬운 코드를 작성할 수 있게 된다.
Spring JDBC를 사용하는 방법
(이번 포스팅에는 Spring JDBC를 사용하지만,
18년도 이후로 새로나온 Spring Data JDBC로 SQL문을 되도록 사용하지않는 JDBC와 관련된 포스팅을 진행하겠다. )
1. 스프링 프레임워크와 JDBC 드라이버를 빌드 경로에 추가한다.
2. JDBC 드라이버 클래스를 로드한다
3. 데이터베이스 연결을 설정한다.
4. SQL 쿼리를 실행하고, 결과를 처리한다.
이와 같이
스프링 프레임워크는 다양한 방법으로 JDBC를 사용할 수 있도록 지원한다.
가장 일반적인 방법은 JdbcTemplate를 사용하는 것이다.
for more information↓
* Spring Date JDBC를 사용하는법.
Spring Data JDBC 적용 순서
- build.gradle에 사용할 데이터베이스를 위한 의존 라이브러리를 추가
- application.yml 파일에 사용할 데이터베이스에 대한 설정
- ‘schema.sql’ 파일에 필요한 테이블 스크립트를 작성
- application.yml 파일에서 ‘schema.sql’ 파일을 읽어서 테이블을 생성할 수 있도록 초기화 설정을 추가
- 데이터베이스의 테이블과 매핑할 엔티티(Entity) 클래스를 작성
- 작성한 엔티티 클래스를 기반으로 데이터베이스의 작업을 처리할 Repository 인터페이스를 작성
- 작성된 Repository 인터페이스를 서비스 클래스에서 사용할 수 있도록 DI 한다.
- DI 된 Repository의 메서드를 사용해서 서비스 클래스에서 데이터베이스에 CRUD 작업을 수행
다시 돌아와서 ↓
Spring JDBC의 주요기능
1. DataSource 설정: Spring JDBC는 DataSource를 사용하여 데이터베이스와 연결한다.
Spring JDBC는 JDBC 드라이버 클래스, 데이터베이스 URL, 사용자 이름 및 암호를 포함하는 DataSource를 만든다.
2. SQL 실행: Spring JDBC는 JDBC 코드를 대체하여 데이터베이스와 상호작용한다.
Spring JDBC를 사용하면 SQL 문을 쉽게 실행할 수 있다.
3. 예외 처리: Spring JDBC는 JDBC 예외 처리를 대체하여 더 많은 예외 정보를 제공한다.
예를 들어, 데이터베이스에서 고유 제약 조건을 위반한 경우, Spring JDBC는 더 자세한 예외 메시지를 제공한다.
4. ORM 프레임워크와 연동: Spring JDBC는 ORM(Object-Relational Mapping) 프레임워크와 연동할 수 있다.
ORM 프레임워크를 사용하면 데이터베이스 테이블과 자바 객체를 매핑할 수 있다.
Spring JDBC 사용하기
Spring JDBC를 사용하려면 다음 단계를 수행하면 된다. ↓
- 데이터베이스 드라이버 설정: 데이터베이스 드라이버 클래스를 클래스패스에 추가해야 한다.
- DataSource 설정: DataSource를 설정해야 한다. Spring은 다양한 유형의 DataSource를 제공한다.
- JdbcTemplate 생성: JdbcTemplate은 Spring JDBC의 핵심 클래스다. JdbcTemplate은 JDBC 코드를 대체하고 데이터베이스와 상호작용한다.
- SQL 실행: JdbcTemplate을 사용하여 SQL 문을 실행할 수 있다. JdbcTemplate은 PreparedStatement를 생성하고 SQL 매개변수를 설정하며, ResultSet을 처리할 수 있다.
예시
예를들어
Spring JDBC를 사용하여 데이터베이스에서 고객 정보를 검색하는 예시
1. 데이터베이스 드라이버 설정:
// MySQL 데이터베이스 드라이버 클래스
Class.forName("com.mysql.cj.jdbc.Driver");
2. DataSource 생성 및 설정
// MySQL 데이터베이스에 연결하기 위한 DataSource 설정
// DataSource 생성
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("root");
dataSource.setPassword("password");
3. JdbcTemplate 생성
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
4. SQL 문 실행
String sql = "SELECT * FROM customers WHERE name = ?";
List<Customer> customers = jdbcTemplate.query(sql, new Object[]{"John Doe"}, new RowMapper<Customer>() {
public Customer mapRow(ResultSet rs, int rowNum) throws SQLException {
Customer customer = new Customer();
customer.setId(rs.getLong("id"));
customer.setName(rs.getString("name"));
customer.setEmail(rs.getString("email"));
return customer;
}
});
위 예제를 설명하자면,
JDBC를 사용하여 Spring 프레임워크에서 데이터베이스와 상호작용하는 방법을 나타낸다.
1. 먼저, DriverManagerDataSource를 사용하여 MySQL 데이터베이스에 연결하는 DataSource 객체를 생성한다.
이 객체는 데이터베이스 연결 정보를 가지고 있으며, 이를 사용하여 JDBC 연결을 설정한다.
2. 다음으로, JdbcTemplate 객체를 생성한다.
이 객체는 데이터베이스 연결 정보를 가지고 있고, 데이터베이스와 상호작용하기 위한 메서드를 제공한다.
3. 마지막으로, JdbcTemplate 객체의 query 메서드를 사용하여 SQL 문을 실행하고, RowMapper를 사용하여 결과를 처리한다.
query 메서드는 첫 번째 매개변수로 실행할 SQL 문을 받고, 두 번째 매개변수로 SQL 매개변수 값을 받는다. RowMapper 인터페이스를 구현하여 결과 집합을 처리하고, List<Customer> 형태로 반환한다.
결과적으로
위에 코드에서는 Customer 클래스를 사용하여 고객 정보를 처리하게 된다.
ResultSet에서 고객 정보를 추출하고, Customer 객체에 저장한다. 이렇게 하면 코드가 더 간결해지고, 유지 보수하기 쉬워지게된다.
결론
Spring JDBC는 JDBC를 사용하는 것보다 더 쉽고 편리한 방법으로 데이터베이스와 상호작용할 수 있도록 돕는다.
(결국에는 공부해뒀다가 쓰면 좋음.)
Spring JDBC를 사용하면 JDBC 코드를 간결하게 작성할 수 있고, 예외 처리와 ORM 프레임워크와의 연동 등의 추가 기능을 제공한다. 따라서, Spring을 사용하는 경우 Spring JDBC를 사용하는 것이 좋다.
이미지 출처: https://fr.wikipedia.org/wiki/Java_Database_Connectivity
'JAVA > Spring' 카테고리의 다른 글
Java 기반 컨테이너 설정방법 (Spring 어노테이션 활용) (0) | 2023.03.13 |
---|---|
스코프(Scope) 란? /SpringFramework (1) | 2023.03.13 |
Spring Boot 이란? [Spring Boot은 왜써?] (0) | 2023.03.10 |
Spring Framework 기본 [스프링 제대로 알아가기] DAY1 (1) | 2023.03.09 |
Aggregate? (애그리거트) 객체지향 프로그래밍 중요 개념 / Java Spring 학습 (0) | 2023.02.21 |
댓글