전체 글57 [Server] Spin lock & Mutex & Semaphore 기본 개념Spin lock, Mutex, Semaphore를 이해하기 전 기본적으로 알아야 하는 개념들이 존재한다. 이에 대해 먼저 살펴보면 다음과 같다.Race Condition ( 경쟁 조건 )여러 프로세스/스레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황Synchronization ( 동기화 )여러 프로세스/스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것Critical Section ( 임계 영역 )공유 데이터의 일관성을 보장하기 위해 하나의 프로세스/스레드만 진입해서 실행 가능한 영역Mutual Exclusion ( 상호 배제 )위의 임계 영역에서 설명한, 하나의 프로세스/스레드만 진입해서 실행한다는 것 또는 동시 프로그래밍에서 공유 불.. 2024. 9. 24. [Spring boot] JPA fetch join 2개 이상의 Collection Join 해결법 JPA fetch Join이전 포스트에서는 JPA의 N+1 문제 및 해결방안에 대해 정리하였다. [Spring boot] JPA N+1 발생 케이스 및 해결 방법JPA FetchType저번 포스트에서 Jpa의 FetchType인 지연 로딩과 즉시 로딩에 대해 정리하였다. [Spring boot] JPA FetchTypeFetchTypeFetchType이란 JPA에서 엔티티를 조회할 때 연관된 ‘엔티티 조회 방법을 결정하는kyu-nahc.tistory.com 지연로딩의 문제점을 해결하기 위해 fetch Join을 사용하였지만,fetch Join은 pagination이나 2개 이상의 Collection Join시 문제가 되었다.pagination은 fetch Join을 사용하지 않고 BatchSize를 사용.. 2024. 9. 23. [Spring boot] JPA N+1 발생 케이스 및 해결 방법 JPA FetchType저번 포스트에서 Jpa의 FetchType인 지연 로딩과 즉시 로딩에 대해 정리하였다. [Spring boot] JPA FetchTypeFetchTypeFetchType이란 JPA에서 엔티티를 조회할 때 연관된 ‘엔티티 조회 방법을 결정하는 전략’을 의미한다.javax.persistence.FetchType 패키지 내에 열거형(Eunm) 형태로 제공된다.// javax.persistence.FetchType.kyu-nahc.tistory.com 즉시 로딩은 예상 못하는 쿼리가 생기거나, JPQL에서 N+1 문제가 발생할 수 있다고 설명하였다.다시 한번 N+1문제를 정리하면 조회 시 1개의 쿼리를 생각하고 설계를 했으나나오지 않아도 되는 조회의 쿼리가 N개가 더 발생하는 문제이다.하.. 2024. 9. 22. [Spring boot] JPA FetchType FetchTypeFetchType이란 JPA에서 엔티티를 조회할 때 연관된 ‘엔티티 조회 방법을 결정하는 전략’을 의미한다.javax.persistence.FetchType 패키지 내에 열거형(Eunm) 형태로 제공된다.// javax.persistence.FetchType.classpublic enum FetchType { LAZY, EAGER; private FetchType() { }} FetchType에는 FetchType.EAGER 타입으로 ‘즉시 로딩(Eager Loading)’ 전략과FetchType.LAZY 타입으로 ‘지연 로딩(Lazy Loading)’ 전략이 존재한다.FetchType 타입은 언제 사용하는 것일까?A라는 엔티티와 B라는 엔티티가 존재한다는 가정 하였.. 2024. 9. 19. [Spring boot] What is QueryDSL? QueryDSL QueryDSL은 정적 타입을 이용해서 SQL과 같은 쿼리를 생성해 주는 오픈소스 프레임워크이다.쿼리를 문자열로 작성하거나 작성하는 것이 아닌, QueryDSL이 제공하는 Fluent API를 이용해 코드 작성의 형식으로 쿼리를 생성할 수 있게 도와준다. 즉 QueryDSL은 SQL, JPQL 등을 코드로 작성할 수 있도록 해주는 빌더 오픈소스 프레임워크이다. 사실, QueryDSL 이 JPA에서만 사용하는 프레임워크로만 알 수도 있지만,위의 공식 사이트를 보면 JPA 뿐만 아니라 SQL, Mongodb, Lucenece 등 다양한 언어에 대해서 서비스를 제공한다. 이번엔 JPA를 사용할 때 함께 많이 사용하는 QueryDSL JPA에 대해서 알아볼 것이다.QueryDSL JPA는 SQL.. 2024. 9. 18. [Java] Java State Pattern State Pattern상태 패턴(State Pattern)은 객체가 특정 상태에 따라 행위를 달리하는 상황에서, 상태를 조건문으로 검사해서 행위를 달리하는 것이 아닌, 상태를 객체화하여 상태가 행동을 할 수 있도록 위임하는 패턴을 말한다.객체 지향 프로그래밍에서의 클래스는 꼭 사물 / 생물 형태의 데이터만 표현할 수 있는 게 아니다. 경우에 따라서 무형태의 행위 / 동작도 클래스로 묶어 표현할 수 있다.그래서 상태를 클래스로 표현하면 클래스를 교체해서 ‘상태의 변화’를 표현할 수 있고, 객체 내부 상태 변경에 따라 객체의 행동을 상태에 특화된 행동들로 분리해 낼 수 있으며, 새로운 행동을 추가하더라도 다른 행동에 영향을 주지 않는다. 전략 패턴(Strategy Pattern)이 '전략 알고리즘'을 클래.. 2024. 9. 16. 이전 1 2 3 4 5 6 ··· 10 다음