Spring
-
[김영한 스프링] 04. JdbcTemplate 적용Spring/스프링 DB 2편 - 데이터 접근 활용 기술 2024. 1. 6. 03:14
JdbcTemplate 적용1 - 기본 이제부터 본격적으로 JdbcTemplate을 사용해서 메모리에 저장하던 데이터를 데이터베이스에 저장해 보자. ItemRepository 인터페이스가 있으니 이 인터페이스를 기반으로 JdbcTemplate을 사용하는 새로운 구현체를 개발하자. JdbcTemplateItemRepositoryV1 main/java/hello/itemservice/repository/jdbctemplate/JdbcTemplateItemRepositoryV1 생성 package hello.itemservice.repository.jdbctemplate; import hello.itemservice.domain.Item; import hello.itemservice.repository.Ite..
-
[김영한 스프링] 03. JdbcTemplate 소개와 설정Spring/스프링 DB 2편 - 데이터 접근 활용 기술 2024. 1. 6. 00:07
JdbcTemplate 소개와 설정 SQL을 직접 사용하는 경우에 스프링이 제공하는 JdbcTemplate은 아주 좋은 선택지다. JdbcTemplate은 JDBC를 매우 편리하게 사용할 수 있게 도와준다. 장점 설정의 편리함 JdbcTemplate은 spring-jdbc 라이브러리에 포함되어 있는데, 이 라이브러리는 스프링으로 JDBC를 사용할 때 기본으로 사용되는 라이브러리이다. 그리고 별도의 복잡한 설정 없이 바로 사용할 수 있다. 반복 문제 해결 JdbcTemplate은 템플릿 콜백 패턴을 사용해서, JDBC를 직접 사용할 때 발생하는 대부분의 반복 작업을 대신 처리해 준다. 개발자는 SQL을 작성하고, 전달할 파리미터를 정의하고, 응답 값을 매핑하기만 하면 된다. 우리가 생각할 수 있는 대부분의..
-
[김영한 스프링] 02. 데이터 접근 기술 프로젝트 구조 설명Spring/스프링 DB 2편 - 데이터 접근 활용 기술 2024. 1. 4. 02:24
프로젝트 구조 설명1 - 기본 build.gradle plugins { id 'org.springframework.boot' version '2.6.5' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-..
-
[김영한 스프링] 01. 데이터 접근 기술 진행 방식 소개 & 프로젝트 설정과 메모리 저장소Spring/스프링 DB 2편 - 데이터 접근 활용 기술 2024. 1. 3. 23:02
데이터 접근 기술 진행 방식 소개 적용 데이터 접근 기술 JdbcTemplate MyBatis JPA, Hibernate 스프링 데이터 JPA Querydsl 여기에는 크게 2가지 분류가 있다. SQLMapper JdbcTemplate MyBatis ORM 관련 기술 JPA, Hibernate 스프링 데이터 JPA Querydsl SQL Mapper 주요기능 개발자는 SQL만 작성하면 해당 SQL의 결과를 객체로 편리하게 매핑해 준다. JDBC를 직접 사용할 때 발생하는 여러 가지 중복을 제거해 주고, 기타 개발자에게 여러 가지 편리한 기능을 제공한다. ORM 주요 기능 JdbcTemplate이나 MyBatis 같은 SQL 매퍼 기술은 SQL을 개발자가 직접 작성해야 하지만, JPA를 사용하면 기본적인 ..
-
[김영한 스프링] 25. 자바 예외 이해 - JDBC 반복 문제 해결(JdbcTemplate)Spring/스프링 DB 1편 - 데이터 접근 핵심 원리 2024. 1. 3. 04:39
JDBC 반복 문제 해결 - JdbcTemplate 지금까지 서비스 계층의 순수함을 유지하기 위해 수많은 노력을 했고, 덕분에 서비스 계층의 순수함을 유지하게 되었다. 이번에는 리포지토리에서 JDBC를 사용하기 때문에 발생하는 반복 문제를 해결해 보자. JDBC 반복 문제 커넥션 조회, 커넥션 동기화 PreparedStatement 생성 및 파라미터 바인딩 쿼리 실행 결과 바인딩 예외 발생 시 스프링 예외 변환기 실행 리소스 종료 리포지토리의 각각의 메서드를 살펴보면 상당히 많은 부분이 반복된다. 이런 반복을 효과적으로 처리하는 방법이 바로 템플릿 콜백 패턴이다. 스프링은 JDBC의 반복 문제를 해결하기 위해 JdbcTemplate이라는 템플릿을 제공한다. JdbcTemplate에 대한 자세한 사용법은 ..
-
[김영한 스프링] 24. 자바 예외 이해 - 스프링 예외 추상화Spring/스프링 DB 1편 - 데이터 접근 핵심 원리 2024. 1. 3. 04:20
스프링 예외 추상화 이해 스프링은 앞서 설명한 문제들을 해결하기 위해 데이터 접근과 관련된 예외를 추상화해서 제공한다. 스프링 데이터 접근 예외 계층 스프링은 데이터 접근 계층에 대한 수십 가지 예외를 정리해서 일관된 예외 계층을 제공한다. 각각의 예외는 특정 기술에 종속적이지 않게 설계되어 있다. 따라서 서비스 계층에서도 스프링이 제공하는 예외를 사용하면 된다. 예를 들어서 JDBC 기술을 사용하든, JPA 기술을 사용하든 스프링이 제공하는 예외를 사용하면 된다. JDBC나 JPA를 사용할 때 발생하는 예외를 스프링이 제공하는 예외로 변환해 주는 역할도 스프링이 제공한다. 참고로 그림을 단순화하기 위해 일부 계층을 생략했다. 예외의 최고 상위는 org.springframework.dao.DataAcce..
-
[김영한 스프링] 23. 자바 예외 이해 - 데이터 접근 예외 직접 만들기Spring/스프링 DB 1편 - 데이터 접근 핵심 원리 2024. 1. 2. 22:14
데이터 접근 예외 직접 만들기 데이터베이스 오류에 따라서 특정 예외는 복구하고 싶을 수 있다. 예를 들어서 회원 가입 시 DB에 이미 같은 ID가 있으면 ID 뒤에 숫자를 붙여서 새로운 ID를 만들어야 한다고 가정해 보자. ID를 hello라고 가입 시도 했는데, 이미 같은 아이디가 있으면 hello12345와 같이 뒤에 임의의 숫자를 붙여서 가입하는 것이다. 데이터를 DB에 저장할 때 같은 ID가 이미 데이터베이스에 저장되어 있다면, 데이터베이스는 오류 코드를 반환하고, 이 오류 코드를 받은 JDBC 드라이버는 SQLException을 던진다. 그리고 SQLException에는 데이터베이스가 제공하는 errorCode라는 것이 들어있다. 데이터베이스 오류 코드 그림 H2 데이터베이스의 키 중복 오류 코..
-
[김영한 스프링] 22. 자바 예외 이해 - 체크 예외와 인터페이스 & 런타임 예외 적용Spring/스프링 DB 1편 - 데이터 접근 핵심 원리 2024. 1. 2. 19:34
체크 예외와 인터페이스 서비스 계층은 가급적 특정 구현 기술에 의존하지 않고, 순수하게 유지하는 것이 좋다. 이렇게 하려면 예외에 대한 의존도 함께 해결해야 한다. 예를 들어서 서비스가 처리할 수 없는 SQLException에 대한 의존을 제거하려면 어떻게 해야 할까? 서비스가 처리할 수 없으므로 리포지토리가 던지는 SQLException 체크 예외를 런타임 예외로 전환해서 서비스 계층에 던지자. 이렇게 하면 서비스 계층이 해당 예외를 무시할 수 있기 때문에, 특정 구현 기술에 의존하는 부분을 제거하고 서비스 계층을 순수하게 유지할 수 있다. 지금부터 코드로 이 방법을 적용해 보자. 인터페이스 도입 먼저 MemberRepository 인터페이스도 도입해서 구현 기술을 쉽게 변경할 수 있게 해보자. 인터페..