프로젝트 (Java)

상품의 재고 관리를 효율적으로 하기 위한 목적으로 설계되었습니다. Redis는 빠른 데이터 처리를 위한 인메모리 데이터 저장소로, 재고 정보와 같은 빈번히 조회되고 업데이트되는 데이터를 처리하는 데 적합합니다. ItemService 클래스의 구현 ItemService 클래스에서는 상품 생성, 업데이트, 삭제 시 Redis에 해당 상품의 재고 정보를 저장하거나 업데이트, 삭제하는 로직을 추가했습니다. 상품 생성 및 업데이트 시 Redis에 저장 상품을 생성하거나 업데이트할 때, 해당 상품의 재고 정보를 Redis에 저장합니다. 재고 정보뿐만 아니라, 예약 상품인 경우 예약 가능 시작 시간과 종료 시간도 함께 저장합니다. @Transactional public ItemDetailDto createItem(C..
Docker를 활용하여, N개의 HTTP 요청을 동시에 보낼 수 있는 툴을 구축하는 과정을 설명합니다. 이를 위해 Python 스크립트 http_request_tool.py를 사용하여 HTTP 요청을 보내고, Docker를 이용하여 이 스크립트를 실행하는 환경을 구축합니다. Dockerfile # Dockerfile FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD [ "python", "./http_request_tool.py" ] FROM python:3.9-slim: Python 3.9 slim 버전 이미지를 기반으로 새 Docker..
문제 상황 프로젝트 개발 과정에서 예약 구매 기능을 구현하던 중, 예약 구매 상품이 예약 가능 시간 외에도 구매될 수 있는 문제가 발생했습니다. 이는 사용자가 설정된 예약 시간을 무시하고 어떤 시간에든 예약 구매 상품을 구매할 수 있게 함으로써, 예약 시스템의 본래 목적을 훼손하는 심각한 오류였습니다. 문제 진단 시스템을 면밀히 검토한 결과, 예약 상품을 구매하는 과정에서 해당 상품의 예약 가능 시간을 검증하는 로직이 누락되었음을 확인했습니다. 따라서, 사용자가 예약 상품을 예약 가능 시간 외에도 주문할 수 있게 되어, 예약 시스템의 기능성이 크게 저하되었습니다. 해결 과정 이 문제를 해결하기 위해, OrderService의 addOrderItemsToOrder 메소드 내에 예약 상품의 예약 가능 시간을..
JPQL 쿼리는 주문(Order)과 연관된 주문 항목(OrderItem) 및 상품(Item) 정보를 효율적으로 불러오는 데 도움을 줍니다. 이는 N+1 문제를 해결하고 데이터 접근 성능을 개선하는 데 유리합니다. OrderRepository public interface OrderRepository extends JpaRepository { @Query("SELECT o FROM Order o " + "JOIN FETCH o.orderItems oi " + "JOIN FETCH oi.item i " + "WHERE o.user.id = :userId") List findByUserId(@Param("userId") Long userId); @Query("SELECT o FROM Order o " + "J..
AsyncConfig @Configuration @EnableAsync public class AsyncConfig { @Bean public Executor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(2); executor.setMaxPoolSize(5); executor.setQueueCapacity(100); executor.setThreadNamePrefix("OrderAsync-"); executor.initialize(); return executor; } } Spring의 @EnableAsync 어노테이션을 사용하여 비동기 처리를 활성화합니다. T..
핵심 구성 요소 Order 사용자에 의해 생성된 주문을 나타냅니다. 사용자 정보, 주문 상태, 주문 항목 리스트 등을 관리합니다. @Entity @Table(name = "orders") @Getter @NoArgsConstructor public class Order extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne(fetch= FetchType.LAZY, optional = false) @JoinColumn(name = "user_id") private User user; @Enumerated(EnumType.STRING) private OrderStatus..
hihyuk
'프로젝트 (Java)' 카테고리의 글 목록 (2 Page)