1. default_batch_fetch_size란? Hibernate의 default_batch_fetch_size는 한 번에 로드되는 엔티티나 컬렉션의 크기를 지정 이 설정은 지연 로딩(LAZY) 상태의 엔티티나 컬렉션을 가져올 때 최소한의 SELECT 쿼리를 사용하도록 도움 작동 원리:예를 들어, 100개의 Post가 있고, 각 Post가 여러 개의 Image와 연관되어 있다고 가정기본적으로 LAZY 로딩에서는 각 Post에 대해 개별적인 SELECT 쿼리가 실행(N+1 문제 발생).하지만 default_batch_fetch_size를 100으로 설정하면, Hibernate는 최대 100개의 Post의 Image를 한 번의 SELECT 쿼리로 가져옴 2. 설정 방법application.yml 또는 ..
@Transient는 Java Persistence API (JPA)에서 사용되는 애노테이션으로, 엔티티 클래스의 특정 필드가 데이터베이스 테이블에 매핑되지 않도록 지정 즉, 해당 필드는 데이터베이스와 상호작용하지 않으며, 영속성 콘텍스트(persistence context)에 포함되지 않음 1. 주요 특징@Transient로 선언된 필드는 데이터베이스에 저장되지 않으며, 쿼리 결과로 조회되지 않음해당 필드는 JPA 관리에서 제외되며, 오직 애플리케이션 내부에서 사용@Transient는 JPA 표준 애노테이션데이터베이스와 연관이 없는 비즈니스 로직이나 캐싱용 필드 등에 사용 2. 사용 예 @Entitypublic class Product { @Id @GeneratedValue(strategy ..
1. 커스텀 어노테이션이 필요한 이유 1.1 사용자 식별 정보 추출 커스텀 어노테이션을 사용하는 이유 JWT 토큰 인증 후 토큰에 있는 정보를 가지고 member의 정보(id, email 등)을 추출하는 로직이 필요한데, 컨트롤러에서 항상 파라미터로 인증 정보를 전달받아서 식별 정보를 추출하는 코드를 계속 작성하는 것은 중복된 코드를 계속 작성하는 불필요한 작업이기 때문에 깔끔하게 어노테이션 하나로 선언적으로 표현하기 위해서 커스텀 어노테이션 사용 2. @AuthMember 어노테이션 선언 @Retention(RetentionPolicy.RUNTIME)@Target(ElementType.PARAMETER)@Parameter(hidden = true)public @interface AuthMember {}..
1. 카카오페이 단건결제 API 1.1 KakaoPay Developer 애플리케이션 등록 카카오페이 단건결제 API를 사용하기에 앞서 KakaoPay Developers에서 애플리케이션 등록이 필요 테스트용으로서 Secret key(dev) 사용 1.2 단건 결제 API 출처 : https://developers.kakaopay.com/docs/payment/online/single-payment 실제 사업자 등록이 필요한 실제 결제가 아니기 때문에 테스트 결제를 이용 단건 결제의 구현 순서는 1. 결제 준비하기, 2. 결제 요청 - 사용자 결제 수단 선택, 3. 결제 승인하기 순으로 이루어짐 결제 준비하기 결제 요청 - 사용자 결제 수단 선택 결제 승인 2. 단건 결제 구현하기 2.1 기본값 설정..
1. SSE 개념 참고 : https://velog.io/@wellbeing-dough/Spring-Boot-SSE-알림-개발 1.1 SSE(Server-Sent-Events) 방식SSE는 서버와 한번 연결을 맺고 나면, 일정 시간 동안 서버에서 변경이 발생할 때마다 서버에서 클라이언트로 데이터를 전송하는 방법클라이언트는 서버를 구독(SSE Connection을 맺음)서버는 변동사항이 생길 때마다 구독한 클라이언트들에게 데이터를 전송 SSE는 서버에서 클라이언트로 text message를 보내는 브라우저 기반 웹 애플리케이션 기술이며 HTTP의 persistent connections을 기반으로 하는 HTML5 표준 기술 💡 클라이언트가 서버와 크게 통신할 필요가 없는 경우와 단지 업데이트된 데이터만 ..
1. 커스텀 어노테이션 도입 모든 API에서 동일한 코드가 반복되는걸 막기 위해, 커스텀 어노테이션을 만들어서 파라미터에서 사용자 정보 또는 토큰 정보를 가져올 수 있도록 하는 방법 2. Argument Resolver 2.1 Argument Resolver란? Argument Resolver는 API 엔드포인트로 인입된 데이터를 가공 및 바인딩 할 때 사용하는 객체 http body 또는 url parameter로 넘어오는 데이터들은, @ReqeustBody와@RequestParam 등으로 바인딩이 가능하지만, http header, 쿠키, 세션 등으로 전달되는 데이터인 경우에는 Argument Resolver를 이용할 수 있음. 💡 Argument Resolver는 대표적으로 세션에서 로그인한 사용..