Spring Boot10 Spring 트랜잭션 관리 제 글에 문제가 있다면 댓글로 알려주시면 감사하겠습니다! 🙇♂️ 트랜잭션? 트랜잭션이란 쪼갤 수 없는 업무 처리의 최소 단위를 말합니다. 트랜잭션 종류에는 데이터베이스 트랜잭션, 메시지 큐 트랜잭션 등등이 있습니다. 트랜잭션의 성질 원자성 (Atomicity) : 한 트랜잭션 내에서 실행한 작업들은 하나의 단위로 처리한다. 즉, 모두 성공 또는 모두 실패 일관성 (Consistency) : 트랜잭션은 일관성 있는 데이터베이스 상태를 유지한다. 격리성(독립성) (Isolation) : 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리해야 한다. 영속성(지속성) (Durability) : 트랜잭션이 성공적으로 처리되면 결과는 항상 저장되어야 한다. Spring에서 트랜잭션을 관리하는 방법은 크게.. 2022. 3. 28. SpringBoot에서 Ehcache 사용해보기 이 글은 2021년 12월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 제 글에 문제가 있다면 댓글로 알려주시면 감사하겠습니다! 🙇♂️ 모든 코드는 Github에서 관리중입니다. 필요할 시 확인하시면 될 것 같습니다. 😊 일단 Cache를 사용하여 데이터를 가져오는 이유를 모르는 사람들을 위해 간략하게 설명해 보겠다. 우리가 기본적으로 cache를 사용하여 데이터를 가져오는 이유는 데이터베이스의 과부하를 줄임과 동시에 짧은 데이터 조회시간을 통해 쾌적한 서비스를 제공함에 있다. 그러나 무분별하게 사용할 경우 원치 않는 데이터가 보여 신뢰성을 떨어트릴 수 있다. 사용하게 된다면 신중하게 사용하도록 하자 Gradle 의존성 implementation 'org.springframework.bo.. 2022. 3. 25. Java 동시성 문제와 ThreadLocal 이 글은 2021년 12월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 제 글에 문제가 있다면 댓글로 알려주시면 감사하겠습니다! 🙇♂️ ThreadLocal 그게 뭐야 ? 간단히 말하자면 스레드 단위로 로컬 변수를 할당하는 기능이다. ThreadLocal의 필요성을 느끼기 위해선 먼저 동시성 문제를 느끼고 알아야 한다. 동시성 문제, 그건 또 뭐야? 스프링 빈은 싱글톤이 보장된다. 이 객체의 인스턴스가 애플리케이션에 딱 1개만 존재한다는 뜻이다. 이렇게 하나만 있는 인스턴스의 필드를 여러 스레드가 동시에 접근하기 때문에 동시성 문제가 발생한다. 예를 들어 회원을 저장하고 1초 쉰 뒤 조회하는 코드가 있다고 가정해보자 private String nameStore; public String logi.. 2022. 3. 25. JPA N+1 문제와 해결 이 글은 2021년 11월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 제 글에 문제가 있다면 댓글로 알려주시면 감사하겠습니다! 🙇♂️ 저는 JPA를 이용하며 프로젝트를 하며 N+1 문제를 만나보진 않았습니다. 하지만 JPA를 사용하면 자주 만나게 되는 것이 N+1 문제입니다. JPA를 공부 할 때에 예시 상황을 만들고 공부를 했었지만 공부한 지 시간이 좀 지났기 때문에 프로젝트 중 N+1 문제가 생기더라도 당황하지 않고 빠르게 해결하기 위해, 다시 공부하기 위해 이 글을 작성합니다. 이동욱 님의이동욱 님의 글을 참고하여 Java8 -> Java11, SpringBoot 1.5.X -> 2.5.X, Junit4 -> Junit5로 버전을 업그레이드하여 코드를 작성하였고, 이 글을 작성하였습니다 .. 2022. 3. 25. JPA 프록시와 연관관계 관리 이 글은 2021년 5월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 시작하기 앞서 저의 글에 대한 피드백이나 지적은 언제나 환영입니다 😊 들어가기 앞서 먼저 프록시란? :프록시(Proxy)란 '대리'라는 의미로, 네트워크 기술에서는 프로토콜에 있어서 대리 응답 등에서 친숙한 개념입니다. em.find()? em.getReference()? em.find() : 데이터베이스를 통해 실제 엔티티 객체 조회 em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시)엔티티 객체 조회 프록시 특징 실제 클래스를 상속받아서 만들어짐 실제 클래스와 겉모양이 같다 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 됨(이론상) 프록시 객체는 실제 객체의 참조(target.. 2022. 3. 25. JPA 상속관계 매핑과 고급매핑 이 글은 2021년 5월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 시작하기 앞서 저의 글에 대한 피드백이나 지적은 언제나 환영입니다 😊 상속관계 매핑 관계형 데이터베이스는 상속관계 X 슈퍼 타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 상속관계 매핑 : 객체의 상속과 DB의 슈퍼 타입 서브타입 관계를 매핑 슈퍼 타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 법 각각 테이블로 변환 -> 조인전략 통합 테이블로 변환 -> 조인 전략 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 @주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS .. 2022. 3. 25. 이전 1 2 다음