분류 전체보기 175

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

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

8. 스프링 트랜잭션 이해(1) - 소개, 적용

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 아래와 같은 순서로 공부를 진행합니다. 스프링 트랜잭션 소개 트랜잭션 적용 확인 트랜잭션 적용 위치 앞서 “스프링 문제 해결 - 트랜잭션” 을 통해서 스프링이 제공하는 트랜잭션 기능이 왜 필요하고 어떻게 동작하는지 내부 원리를 알아보았습니다. https://sh1mj1-log.tistory.com/94 https://sh1mj1-log.tistory.com/95 이번에는 스프링 트랜잭션을 더 깊이있게 학습하고, 또 스프링 트랜잭션이 제공하는 다양한 기능들을 자세히 알아봅시다. 먼저 본격적인 기능 설명 이전에 이전에 학습한 내용을 복습해봅시다. 1...

7. 데이터 접근 기술 - 활용 방안 (JPA, JdbcTemplate, MyBatis 조합)

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 아래와 같은 순서로 공부를 진행합니다. 스프링 데이터 JPA 예제와 트레이드 오프 실용적인 구조 다양한 데이터 접근 기술 조합 이전 글 https://sh1mj1-log.tistory.com/107 의 코드, 구성을 바탕으로 설명합니다. 1. 스프링 데이터 JPA 예제와 트레이드 오프 클래스 의존 관계 런타임 객체 의존 관계 중간에서 JpaItemRepositoryV2가 어댑터 역할을 해준 덕분에 MemberService가 사용하는 MemberRepository 인터페이스를 그대로 유지할 수 있고 클라이언트인 MemberService 의 코드를 변..

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년 부터 점..

3. 데이터 접근 기술 - MyBatis

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 아래와 같은 순서로 공부를 진행합니다. MyBatis 소개 MyBatis 설정 MyBatis 적용1 - 기본 MyBatis 적용2 - 설정과 실행 MyBatis 적용3 - 분석 MyBatis 기능 정리1 -동적 쿼리 MyBatis 기능 정리2 - 기타 기능 1. MyBatis 소개 MyBatis 는 앞서 설명한 JdbcTemplate보다 더 많은 기능을 제공하는 SQL Mapper 입니다. 기본적으로 JdbcTemplate 이 제공하는 대부분의 기능을 제공합니다. JdbcTemplate 과 비교해서 MyBatis 의 가장 매력적인 점은 SQL을 X..

2. 데이터 접근 기술 - 데이터베이스 테스트하는 방법들

이 글은 배민 기술이사 김영한 이사님의 인프런 강의 "스프링 DB 2편 - 데이터 접근 활용 기술" 을 기반으로 작성되었습니다. 문제 시 삭제 조치하겠습니다. 아래와 같은 순서로 공부를 진행합니다. 테스트 - 데이터베이스 연동 테스트 - 데이터베이스 분리 테스트 - 데이터 롤백 테스트 - @Transactional 테스트 - 임베디드 모드 DB 테스트 - 스프링 부트와 임베디드 모드 1. 테스트 - 데이터베이스 연동 데이터 접근 기술을 개발할 때에는 실제 데이터베이스에 접근해서 데이터를 잘 저장하고 조회할 수 있는지 확인하는 것이 필요합니다. 테스트를 실행할 때 실제 데이터베이스를 연동해서 진행 앞서 개발한 ItemRepositoryTest를 통해서 테스트를 진행하겠습니다. main - applicati..