db 14

10. 스프링 트랜잭션 전파 - 활용(2)

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 아래와 같은 순서로 공부를 진행합니다. 전파 커밋 전파 롤백 복구 REQUIRED 복구 REQUIRES_NEW 3. 전파 커밋 스프링은 @Transactional이 적용되어 있으면 기본으로 REQUIRED라는 전파 옵션을 사용합니다. 이 옵션은 이전 글에서도 설명했듯 기존 트랜잭션이 없으면 트랜잭션을 생성하고, 기존 트랜잭션이 있으면 기존 트랜잭션에 참여합니다. 참여한다는 뜻은 해당 트랜잭션을 그대로 따른다는 뜻이고, 동시에 같은 동기화 커넥션을 사용한다는 의미입니다. 이렇게 둘 이상의 트랜잭션이 하나의 물리 트랜잭션에 묶이게 되면 둘을 구분하기 ..

10. 스프링 트랜잭션 전파 - 활용(1)

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 아래와 같은 순서로 공부를 진행합니다. 프로젝트 설정 커밋, 롤백 단일 트랜잭션 0. 프로젝트 설정 비즈니스 요구사항 회원을 등록하고 조회하는 기능을 가집니다. 회원에 대한 변경 이력을 추적할 수 있도록 회원 데이터가 변경될 때 변경 이력을 DB LOG 테이블에 남겨야 합니다. 예제를 단순화 하기 위해 회원 등록시에만 DB LOG 테이블에 남기도록 하겠습니다. Member @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id; private String u..

9. 스프링 트랜잭션 전파 - 기본

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 아래와 같은 순서로 공부를 진행합니다. 커밋, 롤백 트랜잭션 전파란? 트랜잭션 전파 동작 순서 롤백 트랜잭션 전파 동작 순서 내부 롤백에도 외부에 영향주지 않는 방법 스프링 트랜잭션 전파 옵션 종류 스프링에서 트랜잭션은 부모와 자식 사이에 전파가 됩니다. 트랜잭션 전파에서도 여러 전파 수준이 있습니다. 먼저 트랜잭션의 커밋과 롤백을 되짚어보면서 트랜잭션 전파을 알아봅시다. 커밋, 롤백 트랜잭션 시작시 Hikari 에서 커넥션(Connection)을 가져오고 커밋을 하면 Hikari 에 커넥션을 반납합니다. 또한 롤백도 마찬가지로 반영된 내용을 모두..

8. 스프링 트랜잭션 이해(3)

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 아래와 같은 순서로 공부를 진행합니다. 트랜잭션 옵션 소개 예외와 트랜잭션 커밋, 롤백 - 기본 예외와 트랜잭션 커밋, 롤백 - 활용 6. 트랜잭션 옵션 소개 @Transactional public @interface Transactional { String value() default ""; String transactionManager() default ""; Class

8. 스프링 트랜잭션 이해(2) 주의사항, 프록시, 초기화 시점

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 아래와 같은 순서로 공부를 진행합니다. 트랜잭션 AOP 주의 사항 - 프록시 내부 호출 트랜잭션 AOP 주의 사항 - 초기화 시점 4. 트랜잭션 AOP 주의 사항 - 프록시 내부 호출 프록시 내부 호출 @Transactional을 사용하면 스프링의 트랜잭션 AOP가 적용됩니다. 트랜잭션 AOP는 기본적으로 프록시 방식의 AOP를 사용합니다. @Transactional을 적용하면 프록시 객체가 요청을 먼저 받아서 트랜잭션을 처리하고 실제 객체를 호출합니다. 따라서 트랜잭션을 적용하려면 항상 프록시를 통해서 대상 객체(Target)을 호출해야 합니다...

6. 데이터 접근 기술 - Querydsl

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 아래와 같은 순서로 공부를 진행합니다. Querydsl 소개1 - 기존 방식의 문제점 Querydsl 소개2 - 해결 Querydsl 설정 Querydsl 적용 1. Querydsl 소개 1 - 기존 방식의 문제점 기존 방식의 문제점 Querydsl 을 사용하기 전 JPA 을 사용했을 때의 문제점부터 정리해 봅시다. QUERY의 문제점 QUERY는 문자이므로 Type-check 가 불가능합니다. 또 실행하기 전까지 작동여부를 확인할 수 없습니다. JPA에서 QUERY 방법은 크게 3가지가 있었습니다. 1. JPQL(HQL) 장점 SQL QUERY와..

5. 스프링 데이터 JPA(2) - 적용하기

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 이전 글 스프링 데이터 JPA(1) ( https://sh1mj1-log.tistory.com/106 )에 이어지는 내용입니다. 실제로 프로젝트에 적용해보겠습니다. 4. 스프링 데이터 JPA 적용 1 먼저 스프링 데이터 JPA 을 적용하기 전에 설정부터 해줍니다. 설정 build.gradle 추가 //JPA, 스프링 데이터 JPA 추가 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 그런데 이미 이전 글에서 JPA를 설정하면서 spring-boot-starter-data..

5. 스프링 데이터 JPA(1) 소개와 기능

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 아래와 같은 순서로 공부를 진행합니다. 스프링 데이터 JPA 소개1 - 등장 이유 스프링 데이터 JPA 소개2 - 기능 스프링 데이터 JPA 주요 기능 이전 글에서 자바, 스프링에서의 데이터 접근 기술에 대해서 정리했었습니다. SQL Mapper 와 ORM 기술에 대해 알아 보았고 https://sh1mj1-log.tistory.com/99 바로 이전 글에서는 JPA 에 대해서도 구체적으로 알아보았습니다. https://sh1mj1-log.tistory.com/104 1. 스프링 데이터 JPA 소개1 - 등장 이유 이제는 스프링 데이터 JPA 에 ..

4. 데이터 접근 기술 - JPA (2) JPA 적용, 예외 변환

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 아래와 같은 순서로 공부를 진행합니다. JPA 설정 JPA 적용 1 - 개발 JPA 적용 2 - 리포지토리 분석 JPA 적용 3 - 예외 변환 4. JPA 설정 이전 글에 이어서 JPA 을 프로젝트에 실제로 적용해봅시다. 먼저 설정부터 해야합니다. spring-boot-starter-data-jpa 라이브러리를 사용하면 JPA와 스프링 데이터 JPA를 스프링 부트와 통합하고, 설정도 아주 간단히 할 수 있습니다. (스프링 데이터 JPA 는 다음 글에서 구체적으로 설명할 것입니다.) build.gradle에 다음 의존 관계를 추가합니다. //JPA,..

4. 데이터 접근 기술 - JPA (1) JPA 와 JPA 을 사용해야 하는 이유

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 아래와 같은 순서로 공부를 진행합니다. JPA 시작 ORM 개념 1 - SQL 중심적인 개발의 문제점 ORM 개념 2 - JPA 소개 1. JPA 시작 스프링과 JPA는 자바 엔터프라이즈(기업) 시장의 주력 기술입니다. 스프링이 DI 컨테이너를 포함한 애플리케이션 전반의 다양한 기능을 제공한다면, JPA는 ORM 데이터 접근 기술을 제공합니다. 스프링 + 데이터 접근기술의 조합을 구글 트랜드로 비교했을 때 아래와 같습니다. 글로벌에서는 스프링+JPA 조합을 80%이상 사용 국내에서도 스프링 + JPA 조합을 50%정도 사용하고, 2015년 부터 점..