본문 바로가기
728x90

Java21

[ Spring ] Redis 를 이용한 동시성 이슈 처리 (Lettuce, Redisson) 2/2 3-3. Redis와 같은 서드파티를 이용한 동시성 처리redis 를 이용한 동시성 처리에는 두가지 라이브러리가 존재한다.LettuceRedission테스트를 통해 하나씩 알아보자 4-1. Lettuce 를 이용한 동시성 처리먼저 Redis의 사용하기 위해 Redis 를 설치해 주어야 한다. 나는 docker 에 설치하여 사용하였음. (설치는 스킵)먼저 Redis의 lettuce를 사용하려면 의존성을 추가해 주어야 한다.implementation 'org.springframework.boot:spring-boot-starter-data-redis'추가해 주었으면 빌드를 해주고 다음과 같이 초기 설정을 해주자.위와 같이 설정하면 이제 Redis 에 대한 설정은 끝났다.  Lettuce 는 SetNX 명령어.. 2024. 11. 26.
[ Spring ] 다양한 방법을 통한 동시성 이슈 처리 (Synchronized, 낙관적 락, 비관적 락) 1/2 1. 동시성 이슈란?동시성 이슈는 멀티 쓰레드 환경에서 발생할 수 있는 매우 중요한 문제입니다.멀티 쓰레드로 동작하는 데이터베이스에서 동시에 2개 이상의 트랜잭션이 실행되어 데이터의 정합성 또는 무결성이 맞지 않게 되는 문제를 의미한다. 예를 들어 주문 시스템 또는, 은행 송금 출금 시스템을 예로 들 수 있다. 그럼 이제 위의 예를 통해 동시성 이슈를 확인해 보자 2. 동시성 이슈아래와 같이 Entity를 만들어 줍니다.Account : 실제 데이터의 값 변동을 확인하기 위한 EntityTestAccount : 데이터 값 변동을 위한 요청의 개수가 올바르게 실행되었는지 확인하기 위한 Entity 출금 테스트를 위한 API 출금을 하면 account 테이블에서 1번 Entity를 찾아 money 만큼 총량.. 2024. 11. 22.
N+1 문제 N+1 문제란?N+1 문제는 ORM(Object-Relational Mapping) 기술에서 즉 Entity 간의 연관 관계에서 발생하는 이슈이다.연관 관계가 설정된 Entity(테이블) 를 조회하는 경우 조회된 데이터 개수(N) 만큼 연관된 Entity를 조회하기 위해 추가적인 쿼리가 발생하는 문제이다. 즉 N+1 에서, 1은 한 Entity를 조회하기 위한 쿼리 개수이며, N은 조회된 Entity의 개수 만큼 연관된 데이터를 조회하기 위한 추가적인 쿼리의 개수를 의미한다. N+1 문제가 생기는 이유Jpa Repository Interface 에서 findAll() 메서드로 조회할 때 Spring Data Jpa 가 Jpql로 변환하여 실행하기 때문이다. Jpql 이란더보기JPA 는 SQL을 추상화한 .. 2024. 11. 14.
[ Todak ] MapStruct 사용 // mapstruct를 사용하기 위한 의존선 라이브러리 implementation "org.mapstruct:mapstruct:1.5.3.Final"// Mapstruct로 각 데이터 매퍼의 클래스를 생성하기 위해 Annotation-processor 를 추가해 주어야함 annotationProcessor "org.mapstruct:mapstruct-processor:1.5.3.Final"// Lombok 과 Mapstruct 충돌을 없애기 위해 어노테이션 프로세서를 선언해줘야함.// 이를 하지 않으면 Lombok과 호출 순서에서 충돌이 있을 수 있다. // -> Mapstruct 가 Lombok의 getter, setter ,builder 를 사용하기 때문 annotationProcessor "or.. 2024. 9. 12.
728x90