전체 글
-
데이터 접근 기술- Spring Data JPABackEnd/Spring DB 2023. 2. 4. 08:05
Spring Data JPA는 JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리입니다. Spring Data JPA에 대해 이전에 다룬 내용이 있어 다음 링크를 참고하시면 됩니다. 이번 포스팅에서는 Spring Data JPA의 대표적인 기능과 진행 중인 프로젝트에 Spring Data JPA를 적용해 보겠습니다. 01. 프로젝트 환경설정 02. Spring Data JPA 03. Query Method 04. 사용자 정의 리포지토리 Spring Data JPA 대표 기능 공통 인터페이스 기능 JpaRepository 인터페이스를 통해서 기본적인 CRUD 기능을 제공합니다. JpaRepository 사용법 JpaRepository 인터페이스를 상속 받고, 제네릭에 관리할 를 주면 됩니다. JpaRe..
-
데이터 접근 기술- JPABackEnd/Spring DB 2023. 2. 4. 06:57
JPA(Java Persistence API)는 자바의 ORM(Object-Relational Mapping) 기술 표준입니다. 즉, 자바 객체와 관계형 데이터베이스를 중간에서 매핑해주는 ORM 프레임워크입니다. JPA에 대해서는 이전에 다룬 내용이 있어 다음 링크를 참고하시면 됩니다. 이번 포스팅에서는 진행 중인 프로젝트에 JPA를 적용하며 전체적인 그림만 보겠습니다. 01. JPA(Java Persistence API) 02. JPA Mapping Annotation 03. JPA 연관관계 관리 04. JPA 값 타입 05. JPA 객체지향 쿼리 언어(JPQL) JPA 설정 의존성(build.gradle) spring-boot-starter-data-jpa는 spring-boot-starter-jdb..
-
데이터 접근 기술- MyBatisBackEnd/Spring DB 2023. 2. 2. 07:00
MyBatis는 기본적으로 JdbcTemplate이 제공하는 대부분의 기능을 제공하는 SQL Mapper입니다. JdbcTemplate과 비교해서 가장 매력적인 점은 SQL을 XML에 편리하게 작성할 수 있고 동적 쿼리를 매우 편리하게 작성할 수 있다는 점입니다. 다만, JdbcTemplate은 스프링에 내장된 기능이라 별도의 설정없이 사용할 수 있지만 MyBatis는 약간의 설정이 필요합니다. 프로젝트에서 동적 쿼리와 복잡한 쿼리가 많다면 MyBatis를 사용하고, 단순한 쿼리들이 많으면 JdbcTemplate을 선택해서 사용하면 됩니다. MyBatis 공식 메뉴얼 MyBatis 스프링 공식 메뉴얼 MyBatis 설정 의존성 주입(build.gradle) MyBatis는 스프링 부트가 버전을 관리해주는..
-
데이터 접근 기술- 스프링 JdbcTemplateBackEnd/Spring DB 2023. 2. 1. 06:56
JdbcTemplate 장단점 장점 spring-jdbc 라이브러리(스프링으로 jdbc를 사용할 때 기본으로 사용되는 라이브러리)에 포함되어 있어 별도의 복잡한 설정 없이 사용할 수 있는 설정의 편리함을 제공합니다. 템플릿 콜백 패턴을 사용해서 JDBC를 직접 사용할 때 발생하는 대부분의 반복 작업(커넥션 획득, statement를 준비하고 실행, 결과를 반복하도록 루프 실행, 트랜잭션 다루기 위한 커넥션 동기화, 예외 발생 시 스프링 예외 변환기 실행)을 대신 처리해줍니다. 단점 동적 SQL을 다루기가 어렵습니다. JdbcTemplate 주요 기능 JdbcTemplate: 순서 기반 파라미터 바인딩을 지원합니다. NamedParameterJdbcTemplate: 이름 기반 파라미터 바인딩을 지원합니다...
-
데이터 접근 기술- MemoryBackEnd/Spring DB 2023. 1. 31. 21:00
Overview 이번 포스팅부터는 실무에서 주로 사용하는 다양한 데이터 접근 기술들에 대해 알아보겠습니다. 단순히 메모리에 상품 데이터를 저장하는 프로젝트를 기준으로 실제 데이터 접근 기술들을 하나씩 적용해보고, 각각의 데이터 접근 기술들에 대한 사용법 및 장단점에 대해 알아보겠습니다. 적용 데이터 접근 기술 JdbcTemplate MyBatis JPA, Hibernate 스프링 데이터 JPA Querydsl 프로젝트 설명 전체 소스코드는 github repository를 참고하시면 됩니다. 도메인은 Item을 사용하며 이름, 가격, 수량을 속성으로 가지고 있습니다. 메모리 구현체에서 향후 다양한 데이터 접근 기술 구현체로 손쉽게 변경하기 위해 리포지토리에 인터페이스를 도입했습니다. Memory 다음 코..
-
JdbcTemplateBackEnd/Spring DB 2023. 1. 28. 10:00
지금까지 서비스 계층의 순수함을 유지하는 방법에 대해 알아보았습니다. 이번 포스팅에서는 리포지토리에서 JDBC를 사용하기 때문에 발생하는 반복문제를 해결합니다. JDBC 반복 문제 커넥션 조회, 커넥션 동기화 PreparedStatement 생성 및 파라미터 바인딩 쿼리 실행 결과 바인딩 예외 발생 시 스프링 예외 변환기 실행 리소스 종료 리포지토리의 각각의 메서드를 살펴보면 상당히 많은 부분이 반복됩니다. 이런 반복을 효과적으로 처리하는 방법이 템플릿 콜백 패턴입니다. 스프링은 JDBC의 반복 문제를 해결하기 위해 JdbcTemplate이라는 템플릿을 제공합니다. JdbcTemplate은 JDBC로 개발할 때 발생하는 반복을 대부분 해결해줍니다. 그 뿐만 아니라 지금까지 학습했던 트랜잭션을 위한 커넥션..
-
예외(Exception) (2)BackEnd/Spring DB 2023. 1. 28. 09:00
서비스 계층은 가급적 특정 구현 기술에 의존하지 않고, 순수하게 유지하는 것이 좋습니다. 트랜잭션 부분에서 대부분 해결하였지만 예외에 대한 의존 문제가 남았습니다. java.sql.SQLException이라는 JDBC 기술에 의존한다는 점입니다. 이 문제를 해결하기 위해서는 리포지토리가 던지는 SQLException 체크 예외를 런타임 예외로 전환해서 서비스 계층에 던지면 됩니다. 런타임 예외는 서비스 계층이 무시할 수 있기 때문입니다. 인터페이스 도입 인터페이스를 도입하면 MemberService는 MemberRepository 인터페이스에만 의존하면 됩니다. 구현 기술 변경 시 DI를 사용해 MemberService 코드의 변경 없이 구현 기술을 변경할 수 있습니다. package hello.jdbc..
-
예외(Exception) (1)BackEnd/Spring DB 2023. 1. 28. 07:00
예외 계층 Throwable: 최상위 예외이다. 하위에 Exception과 Error가 있다. Error(언체크 예외): 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 개발자는 이 예외를 잡으려고 해서는 안된다. 상위 예외를 catch로 잡으면 그 하위 예외까지 잡기 때문에 Throwable 예외도 잡으면 안된다. Exception(체크 예외): Exception과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. (단, RuntimeException은 예외) RuntimeException(언체크 예외, 런타임 예외): RuntimeException과 그 하위 예외는 모두 컴파일러가 체크하지 않는 언체크 예외이다. 예외 기본 규칙 예외는 잡아서 처리하거..