[Spring] Spring JDBC(1): Spring JDBC가 뭘까? 좋은점? DB에 접근하는 여러 가지 방법

2023. 4. 20. 12:00· Spring
목차
  1. 💋 Spring JDBC를 사용하면 편리해진다!
  2. 💋 Spring JDBC를 사용하여 DB에 접근하는 방법
반응형

💋 Spring을 사용해 DB에 접근하자!

 

 

Spring을 사용한 애플리케이션에서 DAO(Data Access Object) 또는 레포지토리를 만들었다면, 추가적으로 예외 처리에 대한 기능을 할 수 있도록 만들어야 한다.

 

아래와 같이 @Repository 어노테이션을 붙여 주는 것이 가장 좋은 방법이다.

 

@Repository 
public class SomeMovieFinder implements MovieFinder {
    // ...
}

 

@Repository 어노테이션을 사용하면 컴포넌트 스캔을 통해 자동으로 빈으로 등록된다. 기존에 하던 수동 작업이던 XML 설정 파일에 DAO나 Repository 빈으로 등록하는 것을 더이상 하지 않아도 된다!

 

DAO나 Repository 클래스에서는 애플리케이션이 종료되더라도 데이터를 계속 유지되도록 해야 하는데, 이것을 도와주는 것을 영속성 기술이라고 한다.

예시로는 JDBC, Hibernate, MyBatis 등이 있다. 영속성 기술을 이용하여 데이터를 저장하고 조회할 수 있다.

 

무튼 DAO나 Repository 클래스는 각자 사용하는 영속성 기술에 따라서 영속성 리소스에 접근할 수 있어야 한다.

 

예를 들어 JDBC 기반의 Repository는 JDBC DataSource에 접근해야 하고, JPA 기반의 Repository에서는 @PersistenceContext 어노테이션을 사용하여 EntityManager를 주입할 수 있다.

 

각자 상황에 따라서 @Autowired, @Inject, @Resource, @PersistenceContext 어노테이션을 사용하여 의존성을 주입하면 된다.

 

@Repository
public class JpaMovieFinder implements MovieFinder {

    @PersistenceContext // 영속성 리소스!
    private EntityManager entityManager;

    // ...
}

 

그러면 이번 포스팅에서 이야기할 키워드에 대해 먼저 공부해보자!

 


 

✔ JDBC(Java Database Connectivity)

 

  • 자바를 사용하여 관계형 데이터베이스에 접근하기 위한 자바 API

 

✔ DataSource

 

  • 데이터베이스 커넥션 풀을 생성하고 관리하기 위한 인터페이스

 

✔ JdbcTemplate, SimpleJdbcCall

 

  • 데이터에 접근을 도와주는 클래스
  • 스프링 프레임워크에서 제공하는 JDBC 지원 클래스
  • 데이터 액세스에 필요한 기능들을 쉽게 제공한다.

 

@Repository
public class JdbcMovieFinder implements MovieFinder {

    private JdbcTemplate jdbcTemplate;

    @Autowired
    public void init(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    // ...
}

 

이 코드는 DataSource를 주입받고 있고, dataSource 를 가지고 데이터에 접근을 도와주는 클래스인 JdbcTemplate 을 만들고 있다.

 


 

💋 Spring JDBC를 사용하면 편리해진다!

 

아래 표에서 보면, 그간 맨땅에 헤딩 JDBC에 비해서 내가 해야 했던 모든 Action들을 스프링의 JDBC가 많이 가져가서 해주고 있는 것을 볼 수 있다.

 

 

Spring JDBC를 사용하면 DB와 Connection을 맺고 끊음에 대한 과정을 생략하고, 내가 하고 싶은 쿼리에 집중할 수 있어서 굉장히 편리하다! 칭찬해

 

💋 Spring JDBC를 사용하여 DB에 접근하는 방법

 

Spring JDBC를 사용해 DB에 접근하는 것에는 여러 가지 방법이 있다.

// TODO: 나의 코드에 어떤 것이 어떤 이유로 적합한지에 대해서 잘 생각해보면 좋을 것 같다.

 

  • JdbcTemplate의 세 가지 방법
  • SimpleJdbcInsert: 새로운 방법
  • SimpleJdbcCall
  • RDBMS 객체 스타일도 있다.

 

각 방법을 하나씩 살펴보는데, 아직 다 알아듣기 어렵다!

아래의 것들을 종류별로 코드에 사용해봐서 손에 익힌 후에 각자 어떤 곳에 사용하면 좋은지, 어떤 근거로 사용하는 지에 대해 스스로 생각해보면 좋을 것 같다.

 

 

✔ JdbcTemplate

 

  • 가장 전통적이고 인기 있는 Spring JDBC 접근 방식

 

✔ NamedParameterJdbcTemplate

 

  • JDBC의 일반적인 ? 자리 표시자 대신에 이름 있는 매개 변수를 제공하여 문서화 및 사용 편의성을 향상시키는 방식

 

✔ SimpleJdbcInsert / SimpleJdbcCall

 

  • 데이터베이스 메타데이터를 최적화하여 필요한 구성 양을 제한하는 방식
  • 이름 있는 매개 변수를 사용하여 열 이름과 일치하는 매개 변수 맵을 제공하는 방식으로, 데이터베이스가 충분한 메타데이터를 제공하는 경우에만 작동한다.

 

✔ RDBMS 객체

 

  • MappingSqlQuery, SqlUpdate 및 StoredProcedure를 포함하는 객체를 생성
  • 데이터 액세스 계층의 초기화 중에 재사용 가능하고 스레드 안전한 객체를 만든다.

 

다음 포스팅에서는 JdbcTemplate을 사용해서 DB에 접근하고, Querying과 Updating을 하는 방법에 대해 공부해볼 것이다!

반응형
저작자표시 비영리 변경금지 (새창열림)

'Spring' 카테고리의 다른 글

[Spring] Spring JDBC(3): NamedParameterJdbcTemplate를 사용해보자! SqlParameterSource, MapSqlParameterSource, BeanPropertySqlParameterSource  (0) 2023.04.21
[Spring] Spring JDBC(2): JdbcTemplate으로 Query와 Update을 해보자! (queryForObject, query, update, PreparedStatementCreator, KeyHolder)  (0) 2023.04.20
[Spring] Spring MVC(4): @ControllerAdvice로 애플리케이션 전체에서 예외를 처리해보자!  (2) 2023.04.20
[Spring] @Repository를 final class로 만들면 안되는 이유: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dbGameDao'  (1) 2023.04.19
[Spring] Spring의 의존성 주입이 기존 자바 코드의 의존성 주입에 비해서 '더' 좋은 점은 무엇일까?  (0) 2023.04.19
  1. 💋 Spring JDBC를 사용하면 편리해진다!
  2. 💋 Spring JDBC를 사용하여 DB에 접근하는 방법
'Spring' 카테고리의 다른 글
  • [Spring] Spring JDBC(3): NamedParameterJdbcTemplate를 사용해보자! SqlParameterSource, MapSqlParameterSource, BeanPropertySqlParameterSource
  • [Spring] Spring JDBC(2): JdbcTemplate으로 Query와 Update을 해보자! (queryForObject, query, update, PreparedStatementCreator, KeyHolder)
  • [Spring] Spring MVC(4): @ControllerAdvice로 애플리케이션 전체에서 예외를 처리해보자!
  • [Spring] @Repository를 final class로 만들면 안되는 이유: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dbGameDao'
깃짱
깃짱
연새데학교 컴퓨터과학과 & 우아한테크코스 5기 백엔드 스타라이토 깃짱
반응형
깃짱
깃짱코딩
깃짱
전체
오늘
어제
  • 분류 전체보기
    • About. 깃짱
    • Weekly Momentum
      • 2024
    • PROJECT
      • AIGOYA LABS
      • Stamp Crush
      • Sunny Braille
    • 우아한테크코스5기
    • 회고+후기
    • Computer Science
      • Operating System
      • Computer Architecture
      • Network
      • Data Structure
      • Database
      • Algorithm
      • Automata
      • Data Privacy
      • Graphics
      • ETC
    • WEB
      • HTTP
      • Application
    • C, C++
    • JAVA
    • Spring
      • JPA
      • MVC
    • AI
    • MySQL
    • PostgreSQL
    • DevOps
      • AWS
      • 대규모 시스템 설계
    • frontend
      • HTML+CSS
    • NextJS
    • TEST
    • Industrial Engineering
    • Soft Skill
    • TIL
      • 2023
      • 2024
    • Linux
    • Git
    • IntelliJ
    • ETC
      • 日本語

블로그 메뉴

  • 홈
  • 깃허브

인기 글

최근 글

태그

  • TDD
  • 함수형프로그래밍
  • Stream
  • 우테코
  • 컴포지션
  • Java
  • Composition
  • 우테코5기
  • 람다와스트림
  • 조합
  • 우아한테크코스5기
  • 레벨로그
  • 상속과조합
  • lamda
  • OOP
  • 스트림
  • 상속
  • 예외
  • 우아한테크코스
  • 람다
hELLO · Designed By 정상우.v4.2.0
깃짱
[Spring] Spring JDBC(1): Spring JDBC가 뭘까? 좋은점? DB에 접근하는 여러 가지 방법
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.