전체 글
-
[김영한 스프링] 05. JdbcTemplate - 이름 지정 파라미터Spring/스프링 DB 2편 - 데이터 접근 활용 기술 2024. 1. 9. 04:38
JdbcTemplate - 이름 지정 파라미터 1 순서대로 바인딩 JdbcTemplate을 기본으로 사용하면 파라미터를 순서대로 바인딩한다. 예를 들어서 다음 코드를 보자. String sql = "update item set item_name=?, price=?, quantity=? where id=?"; template.update(sql, itemName, price, quantity, itemId); 여기서는 itemName, price, quantity가 SQL에 있는 ?에 순서대로 바인딩된다. 따라서 순서만 잘 지키면 문제가 될 것은 없다. 그런데 문제는 변경시점에 발생한다. 누군가 다음과 같이 SQL 코드의 순서를 변경했다고 가정해 보자. (price와 quantity의 순서를 변경했다.) ..
-
[김영한 스프링] 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 데이터베이스의 키 중복 오류 코..