springboot

1. 쿠폰 발급 동시성 문제 발생 쿠폰 발급 데드락 문제 발생 (이전 글) 이전에 쿠폰 발급 동시성 테스트 중 데드락과 동시성 문제가 발생하였다!그런데 내가 처음에 집중하려던 것은 동시성 문제이기에 일단 `flush()`로 임시조치를 하고 다시 테스트를 실행해보았다. 실행 결과, 동시성 문제가 발생하였다!  발급된 쿠폰(`IssuedCoupon`)은 100개가 생성됐지만 쿠폰(`Coupon`)의 수량은 정상적으로 감소하지 않았다.이를 해결하기 위해 `비관적 락`을 도입하기로 했다. 1-1. 비관적 락을 선택한 이유락에는 `비관적 락`과 `낙관적 락`이 있다.`낙관적 락` 동시성 문제가 발생하지 않을 것이라 가정하여 동시성 문제가 발생했을 때 이를 처리하는 방식`비관적 락` 트랜잭션 충돌이 잦을 것이라 가..
들어가면서...이번에 배달 레전드 프로젝트에서는 배달의 민족과 같은 배달 앱을 개발한다.키워드 검색 API를 구현하면서 시도했던 것, 구현한 것을 정리하려고 한다! 먼저 내가 구현하고자 했던 키워드 검색 API의 기능은 특정 키워드로 검색 시해당 키워드가 `가게 이름에 포함된 가게`, 혹은 `해당 키워드가 메뉴 이름에 포함된 가게`들을 조회하는 것이었다. ex) 배달의 민족처럼 가게에 해당 키워드가 포함된 메뉴들이 있다면 뜨도록! 그래서 처음 생각한 방법은 아래와 같다.처음 시도한 방법public Page search(PageRequest pageRequest, String keyword) { // 가게 이름에 해당 키워드가 포함된 가게 가져오기 Page shops = shopRepo.find..
이번에는 공동구매 게시물 조회 기능을 구현해볼 것이다.@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "user_id")private User writer; 현재 `Copurchasing` 도메인의 `User` 필드는 `FetchType.LAZY`로 설정 돼 있다. 📌 FetchType`지연 로딩(Lazy Loading)` 연관된 엔티티를 처음 접근할 때까지 로드하지 않고 필요할 때만 데이터베이스에서 데이터를 로드`즉시 로딩(Eager Loading)` 엔티티가 로드될 때 연관된 모든 엔티티를 즉시 로드JPA는 지연 로딩을 위해 `프록시 객체`를 사용한다. 실제 데이터는 필요할 때까지 로드되지 않고, 프록시 객체로 대체된다.`LAZY`는 성능 최적화에 유용..
📌 의존성 주입이란?Spring Boot에서 `의존성 주입(Dependency Injection, DI)`은 객체 간의 의존 관계를 자동으로 설정해주는 중요한 개념이다.이를 통해 코드의 `결합도`를 낮추고, `테스트 용이성`과 `유지보수성`을 높일 수 있다. 의존성 주입을 통해 클래스 간의 결합도를 낮출 수 있다. 결합도가 낮아지면, 한 클래스의 변경이 다른 클래스에 미치는 영향을 줄일 수 있다. 이는 코드의 유지보수성과 확장성을 높이는 데 중요한 역할을 한다. 예를 들어, 클래스 A가 클래스 B에 직접 의존하는 경우, B의 변경사항은 A에 직접적인 영향을 미치게 된다. 하지만 의존성 주입을 사용하면, A는 B의 구체적인 구현이 아니라 인터페이스나 추상 클래스에 의존하게 되어, B의 구현 변경이 A에 ..
린구
'springboot' 태그의 글 목록