JAVA/Spring

JDBC(Spring JDBC)란? / 스프링 JDBC 알고넘어가기! ^^

min민 2023. 2. 20.

 

 

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 적용 순서

  1. build.gradle에 사용할 데이터베이스를 위한 의존 라이브러리를 추가
  2. application.yml 파일에 사용할 데이터베이스에 대한 설정
  3. ‘schema.sql’ 파일에 필요한 테이블 스크립트를 작성
  4. application.yml 파일에서 ‘schema.sql’ 파일을 읽어서 테이블을 생성할 수 있도록 초기화 설정을 추가
  5. 데이터베이스의 테이블과 매핑할 엔티티(Entity) 클래스를 작성
  6. 작성한 엔티티 클래스를 기반으로 데이터베이스의 작업을 처리할 Repository 인터페이스를 작성
  7. 작성된 Repository 인터페이스를 서비스 클래스에서 사용할 수 있도록 DI 한다.
  8. 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를 사용하려면 다음 단계를 수행하면 된다. ↓

 

  1. 데이터베이스 드라이버 설정: 데이터베이스 드라이버 클래스를 클래스패스에 추가해야 한다.
  2. DataSource 설정: DataSource를 설정해야 한다. Spring은 다양한 유형의 DataSource를 제공한다.
  3. JdbcTemplate 생성: JdbcTemplate은 Spring JDBC의 핵심 클래스다. JdbcTemplate은 JDBC 코드를 대체하고 데이터베이스와 상호작용한다.
  4. 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

 

 

댓글