Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

JustDoEat

JDBC Template에 대해 가볍게 정리해 보자. 본문

카테고리 없음

JDBC Template에 대해 가볍게 정리해 보자.

kingmusung 2024. 2. 13. 21:56

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

 

학습 페이지

 

www.inflearn.com

 

김영한 선생님의 강의를 바탕으로 이해한 내용 및 추가로 조사한 자료로 작성을 하였으며, 코드에 대한 저작권 또한 김영한 선생님에게 있습니다.

문제가 될시 삭제하도로 하겠습니다 감사합니다.

JDBC란

자바표준 인터페이스중 하나로써, 사용자가 데이터베이스와 상호작용을 하도록 도와주는 API이다.

JDBC를 사용하면 쿼리문을 사용하여 데이터 베이스와 상호작용 하도록 해줍니다.

 

데이터베이스에 연결하기 위한 표준 인터페이스와 그에 해당하는 메서드 및 클래스들이 정의되어 있습니다. 실제로 데이터베이스에 접속하려면 해당 데이터베이스를 지원하는 JDBC 드라이버가 필요합니다JDBC 드라이버는 각 데이터베이스 공급 업체가 제공하며, 이 드라이버를 사용하여 데이터베이스에 연결하고 쿼리를 실행할 수 있습니다

 

일단 강의에서 설치한 H2데이터 베이스에 JDBC드라이버가 들어가있다고한다, 다른 DB도 마찬가지.

 

추가로 공급사에서 공급하는 JDBC를 스프링에서 인식 할 수 있도록 하기위해 아래와 같은 의존성을 추가를 했다.

implementation 'org.springframework.boot:spring-boot-starter-jdbc' //jdbc 드라이버 설치해주는거임

(gradle.build에 위와같은 종속성을 주입해주었는데, 이유를 알겠다 이제. JDBC드라이버가 있어야 하거덩여~)

 

추가적으로 임포트 하는 이유는

스프링 부트가 JDBC를 사용할 때 필요한 기본 설정들을 제공하여 개발자가 따로 설정할 필요 없이 간편하게 JDBC를 사용할 수 있습니다. 

-> 아래에 DataSource에 대해서도 정리를 하였는데 이 부분과도 상당한 관계가 있다.

 

필요한 JDBC 관련 라이브러리들의 버전 관리를 스프링 부트가 대신 해줍니다. 따라서 개발자는 JDBC 관련 라이브러리의 버전을 직접 관리하지 않아도 됩니다. 

 

 

 

 

h2 데이터 베이스의 JDBC URL 부분을 보면 jdbc:h2 라고 써있는데 이 말이 jdbc를 사용해서 h2를 사용한다는 의미라고 한다.

 

신기하게도 데이터베이스를 실행하면 하단에

이런식으로 아이콘이 뜨는데 이게 JDBC가 실행이 되고있는 뜻이라고 한다.

 

아! 위와같은 방식이 어우러져서 JDBC URL이 저런식으로 진행이 되는구나 하고 정리를 하면서 이해가 되었다.

 

 


 

JDBC Template란

JDBC Template은 JDBC로 하던 노가다(?) 작업을 자바의 인터페이스로 구현을 하여 편리하게 JDBC를 사용하도록 만든 라이브러리이다. 

(물론 쿼리문은 작성을 해야함)

 

resource/application.properties

pring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa

 

강의에서 위와 같은 설정을 하셨는데 그 이유는

 

DataSource를 설정해주기 위해서이다.

 

추가적으로

implementation 'org.springframework.boot:spring-boot-starter-jdbc' //jdbc 드라이버 설치해주는거임

JDBC를 사용할 때 설치한 의존성도 똑같이 설치를 해주어야 한다.


DataSource란?

DataSource는 JDBC(Java Database Connectivity)에서 데이터베이스 연결을 관리하는 인터페이스입니다. 이를 통해 애플리케이션은 데이터베이스와의 연결을 설정하고 데이터베이스 작업을 수행할 수 있습니다. DataSource는 일반적으로 데이터베이스에 대한 연결 풀을 제공하며, 애플리케이션에서 데이터베이스에 대한 연결을 효율적으로 관리할 수 있도록 도와줍니다. DataSource를 사용하면 다음과 같은 작업을 수행할 수 있습니다: 데이터베이스와의 연결 설정: 데이터베이스 URL, 사용자 이름, 암호 등을 설정하여 데이터베이스와의 연결을 설정합니다.


DataSource를 스프링빈에 넣자

DataSource에 대해 설명을 하였으니, 이제 해야 할 작업은 스프링빈에 넣어주도록 하는 작업이다.

SpringConfig

//생략

@Autowired 
private final DataSource dataSource;
 
 //생략
 
 @Bean
 public MemberRepository memberRepository() {

     return new JdbcMemberRepository(dataSource);

 }

 

스프링빈에 Repository를 등록을할떄 데이터베이스로 DataSource에 있는 데이터베이스를 사용하겠다는 말이다.

 

private final DataSource dataSource; 

 

그럼 dataSource라는 변수에는 H2 DB에 대한 데이터 소스가 설정이 되는것이다.

 


지금까지, datasource를 설정 후 스프링빈에 넣는 법까지 배웠다.

 

그럼 이 객체를 사용하려면 JdbcTemplate라는 객체를 알아야 한다.

JdbcTempate 객체란?

SQL 쿼리 실행 

JdbcTemplate을 사용하여 SQL 쿼리를 실행하고 데이터베이스로부터 데이터를 검색할 수 있습니다. 

예를 들어, SELECT, INSERT, UPDATE, DELETE 등의 SQL 쿼리를 실행할 수 있습니다. 

 

파라미터화된 쿼리

JdbcTemplate을 사용하여 파라미터화된 SQL 쿼리를 실행할 수 있습니다. 이를 통해 쿼리의 매개변수를 동적으로 설정할 수 있습니다.

 

예외 처리: 

JdbcTemplate은 JDBC 작업 중 발생할 수 있는 예외를 적절하게 처리합니다. 이를 통해 데이터베이스 작업 중 발생하는 예외를 처리하고 오류를 적절하게 처리할 수 있습니다. 

 

결과 매핑: 

JdbcTemplate은 SQL 쿼리의 결과를 자바 객체로 매핑하는 기능을 제공합니다. 이를 통해 데이터베이스로부터 검색된 결과를 자바 객체로 변환하고 사용할 수 있습니다. 

 

트랜잭션 관리: 

JdbcTemplate은 트랜잭션을 관리할 수 있는 기능을 제공합니다. 이를 통해 여러 개의 JDBC 작업을 하나의 트랜잭션으로 묶어서 실행하고 롤백 등의 작업을 수행할 수 있습니다.

 

JdbcTemplate 객체를 사용하기 위해 @Repository에 의존성 주입을 받아서 사용해야한다.

private final JdbcTemplate jdbcTemplate;
public JdbcTemplateMemberRepository(DataSource dataSource) {
    jdbcTemplate = new JdbcTemplate(dataSource);
}