BackEnd/Spring DB
-
트랜잭션 전파(propagation)BackEnd/Spring DB 2023. 2. 15. 22:00
스프링 트랜잭션 전파 옵션 REQUIRED 전파 옵션에 별도의 설정을 하지 않으면 기본으로 사용되는 설정으로, 기존 트랜잭션이 없으면 생성하고 있으면 참여합니다. 기존 트랜잭션 없음: 새로운 트랜잭션을 생성한다. 기존 트랜잭션 있음: 기존 트랜잭션에 참여한다. REQUIRES_NEW 항상 새로운 트랜잭션을 생성합니다. 기존 트랜잭션 없음: 새로운 트랜잭션을 생성한다. 기존 트랜잭션 있음: 새로운 트랜잭션을 생성한다. SUPPORT 트랜잭션을 지원한다는 뜻으로 기존 트랜잭션이 없으면 없는대로 진행하고, 있으면 참여합니다. 기존 트랜잭션 없음: 트랜잭션 없이 진행한다. 기존 트랜잭션 있음: 기존 트랜잭션에 참여한다. NOT_SUPPORT 트랜잭션을 지원하지 않는다는 의미입니다. 기존 트랜잭션 없음: 트랜잭션..
-
트랜잭션(Transaction) 심화BackEnd/Spring DB 2023. 2. 11. 08:50
이번 포스팅부터는 다음 프로젝트를 참고하시면 됩니다. Spring Transaction 트랜잭션 적용 확인 @Transactional을 통한 선언적 트랜잭션 방식에서 스프링 트랜잭션은 AOP를 기반으로 동작합니다. @Transactional을 메서드나 클래스에 붙이면 해당 객체는 트랜잭션 AOP 적용의 대상이 되고, 결과적으로 실제 객체 대신에 트랜잭션을 처리해주는 프록시 객체가 스프링 빈에 등록됩니다. 그리고 주입을 받을 때도 실제 객체 대신에 프록시 객체가 주입됩니다. 트랜잭션 프록시가 호출하는 트랜잭션의 시작과 종료를 명확하게 로그로 확인하기 위해서는 application.properties에 다음을 추가합니다. logging.level.org.springframework.transaction.in..
-
데이터 접근 기술- 활용BackEnd/Spring DB 2023. 2. 9. 01:00
Querydsl을 사용한 리포지토리는 스프링 데이터 JPA를 사용하지 않았습니다. 이번에는 스프링 데이터 JPA와 Querydsl을 함께 사용하는 구조에 대해 알아보겠습니다. 복잡한 쿼리 분리 ItemRepositoryV2는 기본 CRUD 기능을 제공하는 스프링 데이터 JPA 리포지토리이고, ItemQueryRepositoryV2는 복잡한 쿼리 기능을 제공하는 Querydsl 리포지토리입니다. package hello.itemservice.repository.v2; import hello.itemservice.domain.Item; import org.springframework.data.jpa.repository.JpaRepository; public interface ItemRepositoryV2 e..
-
데이터 접근 기술- QueryDSLBackEnd/Spring DB 2023. 2. 4. 09:11
QueryDSL Query + Domain + Specific + Language 쿼리에 특화된 프로그래밍 언어 단순, 간결, 유창 다양한 저장소 쿼리 기능 통합 QueryDSL 장단점 장점 동적 쿼리 문제를 해결합니다. 쿼리 문장에 오타가 있어도 컴파일 시점에 오류를 막을 수 있습니다. 메서드 추출을 통해서 코드를 재사용할 수 있습니다. 자바 코드로 쿼리를 작성할 수 있습니다. 단점 Q코드 생성을 위한 APT를 설정해야 합니다. 복잡한 쿼리의 경우 쿼리 분석이 어렵습니다. 전체 쿼리를 DBMS 툴로 조회하기 위해서는 실행되는 쿼리를 로깅하는 등의 방식으로 확인해야 합니다. QueryDSL 이전 정리 글 01. Querydsl 레퍼런스 문서 02. Querydsl 설정 03. Querydsl 기본 문법 ..
-
데이터 접근 기술- 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는 스프링 부트가 버전을 관리해주는..