분류 전체보기 101

캐시 설정

🎬 Spring Boot + Redis로 영화 서비스 만들기 (조회수 캐싱 기능 포함)Spring Boot와 Redis를 활용해 영화 조회수 집계와 캐싱 기능을 구현한 MovieService 코드를 소개합니다. 조회수가 가장 높은 영화 하나를 Redis에 저장해두고, 전체 영화 목록을 가져올 때 가장 먼저 보여주는 구조입니다.✅ 사용 기술Spring BootSpring Data JPARedis (RedisTemplate)Spring Cache (@Cacheable, @CacheEvict)Java 17+📁 MovieService 전체 코드@Service@RequiredArgsConstructor@EnableCachingpublic class MovieService { private final Mo..

스프링 2025.05.19

AWS EC2 + RDS + S3를 활용한 웹 애플리케이션 배포기

물론입니다! 아래는 전체 내용을 마크다운 (.md) 형식으로 작성한 것입니다. 이 파일을 README.md로 저장하거나 티스토리 블로그에 마크다운 방식으로 올리면 바로 사용할 수 있습니다.# ☁️ AWS EC2 + RDS + S3를 활용한 웹 애플리케이션 배포기이번 프로젝트에서는 **AWS의 EC2, RDS, S3를 사용하여 Spring Boot 웹 애플리케이션을 배포**하고, 데이터베이스 및 이미지 업로드 기능을 구현했습니다. 각 서비스의 설정 과정과 결과 화면을 정리했습니다.---## ✅ 1. EC2 - 웹 애플리케이션 배포 & Health Check API### 🔧 EC2 인스턴스 설정 요약- 인스턴스 유형: `t2.micro`- OS: Amazon Linux 2- 탄력적 IP 부여: 외부에서 접..

카테고리 없음 2025.05.15

명예의 전당 (1)

🏅 Java로 명예의 전당 점수 계산하기 (PriorityQueue 활용)이번 포스트에서는 Java의 PriorityQueue(우선순위 큐) 를 활용하여, 주어진 점수들 중 상위 k명을 뽑아 매일의 명예의 전당 최하위 점수를 기록하는 문제를 풀어봅니다.✨ 문제 설명매일 점수가 주어진다.명예의 전당에는 최대 k명까지만 올라갈 수 있다.매일의 점수가 들어오면, 명예의 전당을 갱신한다.그날의 명예의 전당에서 가장 낮은 점수를 기록한다.🧠 풀이 아이디어명예의 전당은 가장 낮은 점수를 빠르게 알 수 있어야 하므로 → PriorityQueue(최소 힙)를 사용.크기가 k보다 작을 때는 그냥 삽입.크기가 k일 때, 현재 점수가 가장 낮은 점수보다 크면 교체.매 반복마다 honor.peek()(최소값)을 결과 리스..

정리 2025.05.14

푸드 파이트 대회

푸드 파이트 대회 문제문제 설명수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다.대회 규칙두 선수는 같은 종류의 음식을 같은 양만큼 먹어야 하며, 음식의 순서도 같아야 합니다.칼로리가 낮은 음식을 먼저 먹을 수 있도록 배치합니다.입력 예시food = [1, 3, 4, 6] → "1223330333221"food = [1, 7, 1, 2] → "111303111..

카테고리 없음 2025.05.13

JPQL로 작성된 findByIdWithUser 를 QueryDSL로 변경합니다.

# Todo 관련 Repository 및 QueryDSL 구현이 문서는 `Todo` 엔티티와 관련된 Spring Data JPA와 QueryDSL을 사용한 커스텀 쿼리 구현을 설명합니다.## 1. `TodoRepositoryQueryDSL` 인터페이스`TodoRepositoryQueryDSL` 인터페이스는 `Todo` 엔티티와 관련된 커스텀 쿼리 메서드를 정의하는 인터페이스입니다. 이 인터페이스는 QueryDSL을 사용한 커스텀 메서드의 표준을 제공하며, 실제 구현은 `TodoRepositoryImpl` 클래스에서 수행됩니다.```javapackage org.example.expert.domain.todo.repository;import org.example.expert.domain.todo.entity..

스프링 2025.05.05

JPA 다대일 연관관계에서 연관관계 편의 메서드를 꼭 분리해야 할까?

🔹 들어가며Spring JPA에서 @ManyToOne, @OneToMany 같은 연관관계를 다룰 때, 단순히 Entity를 설정하는 것보다 더 중요한 건 **"연관관계를 어떻게 유지할 것인가"**입니다.특히 할 일(Todo)을 생성할 때 자동으로 유저(User)를 담당자(Manager)로 등록하는 예처럼, 연관 엔티티를 함께 조작할 일이 많을수록 편의 메서드를 따로 만드는 습관이 중요해집니다.🔹 문제 상황 예시public Todo(String title, String contents, String weather, User user) { this.title = title; this.contents = contents; this.weather = weather; this.user =..

스프링 2025.05.02

KPT 회고

KPT 회고 - 가게 기능 & 인증 처리 경험✅ Keep (잘한 점, 계속할 점)가게 생성, 수정, 조회, 폐업 기능을 명확히 분리하고, 각각에 대해 Entity, DTO, Controller, Service, Repository 계층을 체계적으로 구성함가게 상태에 따른 처리 로직(예: 폐업 여부에 따라 수정 제한 등)을 도입해 실제 운영 환경을 고려한 설계를 함@AuthenticationPrincipal을 사용하여 인증된 사용자 기반으로 가게 기능을 연동함❌ Problem (문제점, 아쉬운 점)@AuthenticationPrincipal로 받아오는 사용자 ID가 String 타입이라, 이를 Long으로 변환하는 과정에서 타입 불일치로 인한 혼란이 발생함인증 객체와 UserEntity 간의 연결 흐름이 ..

스프링 2025.04.29