JPA와 Spring Data JPA의 차이 📌 서론 컨퍼런스를 다니며 종종 JPA와 Spring Data JPA를 다르게 구별해서 사용하는 것을 보고, 이 둘의 명확한 차이가 무엇인지 알아보기로 했다. JPA (Java Persistence API) 정의와 목적 JPA는 Java EE의 일부로, 자바에서 관계형 데이터베이스를 사용하는 표준화된 방식을 제공한다. 주 목적은 개발자가 데이터베이스와 상호 작용하는 방식을 단순화하고, 객체 관계 매핑(ORM)을 통해 객체 지향 프로그래밍과 관계형 데이터베이스 간의 간격을 좁히는 것이다. 기능 엔티티 매니저를 사용하여 데이터베이스의 CRUD 작업을 수행한다. 다양한 어노테이션을 활용하여 객체와 테이블 간의 매핑을 제공하며, JPQL을 사용하여 쿼리를 실행한다. ..
전체 글
하다보니 재미있는 AI에 빠져있는 평양냉면7 문의사항: ysoil8811@gmail.com테스트 격리성의 중요성과 모의 객체(Mock Object)를 활용한 전략 @MockBean과 @Mock의 차이 (+ @InjectMocks) 스프링 테스트 코드: @MockBean과 @Mock의 차이 (+ @InjectMocks) 스프링 테스트 코드에서 @MockBean과 @Mock의 이해와 활용 📌 서론 테스트 코드 작성 시 자주 마주치는 @Mock과 @MockBean은 비슷해 보이지만, 각각 다른 목적과 환경에서 사용된다. 이 두 어노테이션의 yijoon009.tistory.com 위 글에서 다음과 같은 내용의 댓글이 달렸다. 좋은 내용 감사해요! 궁금한게 있습니다. 테스트 중에는 AuthService의 실제 로직이 실행되면서, 의존하는 컴포넌트는 제어 가능한 모의 객체로 대체되어 테스트의 격리성을 ..
Spring 테스트에서 실제 호출 @SpyBean으로 확인하기 📌 서론 스프링 이벤트 리스너 클래스를 테스트하다가 잘 안 돼서 팀원과 이것저것 찾아본 결과, @SpyBean이라는 새로운 어노테이션을 알게 되었다. 이번 글에서 @SpyBean에 대해서 설명하고 다음 장에서 이 어노테이션을 사용해서 스프링 이벤트 리스너 클래스를 테스트하는 과정을 설명하겠다. @SpyBean이란? @SpyBean은 Spring Framework에서 제공하는 테스트 관련 어노테이션이다. 이 어노테이션은 Spring의 ApplicationContext 내에 존재하는 빈(bean)의 인스턴스를 감시(spy)하는 데 사용된다. 이는 실제 객체를 사용하지만, Mockito 프레임워크를 통해 해당 빈의 모든 메서드 호출을 감시하고, 필..
스프링 테스트 코드에서 @MockBean과 @Mock의 이해와 활용 📌 서론 테스트 코드 작성 시 자주 마주치는 @Mock과 @MockBean은 비슷해 보이지만, 각각 다른 목적과 환경에서 사용된다. 이 두 어노테이션의 차이점을 명확히 이해하고 올바르게 활용하는 것은 효율적인 테스트 코드 작성에 중요하다. @MockBean이란 무엇인가? @MockBean은 Spring Boot 테스트 환경에서 사용되는 어노테이션으로, 가짜(모의) 빈을 생성하여 스프링 애플리케이션 컨텍스트(ApplicationContext에)에 추가한다. Mockito 테스팅 프레임워크를 사용하여 실제 구현체를 갖지 않는 모의 객체를 생성한다. 주로 통합 테스트에서 사용된다. @MockBean의 역할 의존성 격리 @MockBean은 실제..
코드 최적화를 위한 매직 상수 사용법: 이점과 대안적 관리 방법 📌 서론 프로젝트를 개발하면서 매직 상수를 사용하는 일이 많이 있었다. 많은 경우에 final 키워드의 사용은 이해가 가지만, static 키워드까지 함께 사용하는 이유에 대해서는 궁금증이 생겼다. 이에 따라, 매직 상수를 활용하는 실제 사례와 final 그리고 static의 사용 목적을 탐구하고 정리해 보기로 했다. 이 글은 그러한 고민과 탐색의 결과를 담은 것으로, 매직 상수의 사용 이유와 그것이 개발에 미치는 영향을 분석해 봤다. 1. 매직 상수(Magic Constant)란? 매직 상수는 소스 코드 내에서 고정된 값을 가진 상수로, 이 값은 프로그램의 실행 동안 변경되지 않는다. 이러한 상수들은 주로 숫자나 문자열 형태로 나타나며, ..
스프링 부트 3.1.2 버전에서 AWS SNS 클라이언트 여러 개 사용하기 📌 서론 기존에 이미 프로젝트에서 서울 리전에 SNS, SQS를 사용하기 위한 SnsClient가 빈으로 등록되어 있던 상황이다. 그런데 회원가입을 할 때 사용자가 입력한 휴대폰 번호로 문자를 보내는 기능이 추가되었다. 이 기능을 개발하기 위해 AWS SNS 기능 중 SMS 문자 메시지를 보내는 서비스를 이용하기로 했다. 그러나 AWS 서울 리전에는 SMS를 보내는 기능이 없기 때문에 도쿄 리전에서 SMS를 보내는 기능을 사용했다. 그리고 스프링 부트에 도쿄 리전에서 SMS 전송을 위한 SNS 클라이언트를 생성하려다 보니 동일한 SnsClient 가 두 개 생겨버리는 문제가 발생했다. 🔻 AWS SNS, SnsClient가 무엇인..
Spring Boot 3 버전에서 AWS SNS를 통한 SMS 발송하기 📌 서론 AWS에서 SMS 메시지를 보내는 기능을 구현할 때 흔히 "AWS SMS"라고 언급하는 것은 실제로 AWS SNS(Simple Notification Service)의 SMS 발송 기능을 사용하는 것을 의미한다. AWS에서는 SMS 메시지를 전송하기 위해 별도의 'SMSClient' 같은 클라이언트를 제공하지 않고, 이 기능은 SNS 서비스의 일부로 제공된다. AWS SNS는 다양한 형태의 알림을 지원하는 서비스로, 이메일, SMS, HTTP/S 알림 등을 보낼 수 있다. 특히 회원가입, 암호 재설정, 2단계 인증과 같은 상황에서 사용자에게 SMS를 보내야 할 때 많이 활용된다. AWS SMS 도입 이유 우리 프로젝트에서 회..
JPA N+1 문제 해결하기 (fetch join, entityGraph, batch size) 서론 사이드 프로젝트를 같이 하는 동료와 이것저것 얘기하다가 N+1 문제에 대해서 이야기가 나왔다. 굉장히 단순하고 간단하게 알고있던 개념이었는데 계속 얘기하다보니 조금 헷갈리고 기존에 잘못 이해하고 있던 개념들도 있다는걸 알게되어서 이번 기회에 N+1 문제에 대해서 정확한 해결 방법을 정리해보려고 했다. 이후 나올 예시 코드를 테스트할 수 있는 컨트롤러, 서비스, 레파지토리는 아래 링크 레파지토리 안에 [nplusone] 패키지에서 확인할 수 있다. GitHub - yijoon009/blog-coding Contribute to yijoon009/blog-coding development by creatin..