[Spring JPA] JPA Transactional 좀 더 알기
·
Spring/JPA
현재 `SpringBoot`를 사용하시는 대부분의 개발자라면, 대부분 `Spring Data JPA`를 사용할 것이다.또한, `Spring`에서 제공해주는 `@Transactional`이라는 어노테이션을 많이 활용할 것이다. 그런데, 이것저것 공부를 하며 내가 몰랐던 `JPA Transactional`에 관한 많은 지식을 카카오페이의 테크 블로그를 통해 알게 되었다. 따라서, 이번 포스팅 내용은 해당 블로그에서 얻은 지식을 정리하는 것이다.추후, 진행중인 `StudyWithMe`에도 적용해 볼 예정이다. 그럼 시작해보자.@Transactional이란?`Spring Transactional annotation`, 이하 `@Transactional`은 `Spring`에서 메서드의 원자성을보장하기 위해 정의된..
[Spring] Tomcat Thread Pool
·
Spring/유용한 정보
이번 포스팅에서는 Spring Boot의 내장 서버로 활용할 수 있는 `Tomcat`의 `Thread Pool`에 관해 좀 자세히 알아보려고 한다. Thread 개요스레드, 스레드.. 컴공과 개발자를 꿈꾸는 사람이라면 수도 없이 들어봤을 그 이름이다. `Thread`는 `Process`의 작업의 단위이다. 그리고 CPU Core가 `Thread` 단위로 작업을 처리하게 된다. 즉, 결론적으로 `Thread`는 CPU Core의 실행 단위라고 할 수 있다. `Thread`를 사용함으로 하나의 `Process`에서 두 가지 이상의 작업을 동시에 실행 가능하게 된다. 단순하게 Thread를 사용하게 된다면?만약 새로운 요청이 들어올 때마다 새로운 `Thread`가 생성된다고 가정해보자. 생성 비용이 큰 Thr..
[JPA] getReferenceById() 리마인드
·
Spring/JPA
`StudyWithMe` 프로젝트를 하면서 잊고 있었던 `getReferenceById()` JPA 메서드를 사용했다. findById()와 getReferenceById() findById()와 getReferenceById()가 데이터를 가져오는 방식에는 어떤 차이가 있을까?  findById()Optional findById(ID id)Optional: 조회된 엔티티를 Optional로 감싼 반환 타입이다.Optional은 엔티티가 존재하지 않을 수도 있는 경우에 사용된다.ID: 조회할 엔티티의 식별자(ID) 타입이다.조회된 엔티티 객체를 Optional로 감싸서 반환한다.`CrudRepository`와 `JpaRepository` 인터페이스에서 모두 제공되는 메소드이다. getReferenceBy..
Spring Boot 3.4.0 버전부터 @MockBean Deprecated이 되었다.
·
Spring/Test
현재 진행하고 있는 `Study With Me` 프로젝트에서 `@MockBean`을 사용하려고 보니  deprecated 되었다.. 그럼 뭘로 대체 되었을까 찾아보았는데  `@MockitoBean`으로 대체되었음을 확인했다. 사용 방법은 아래처럼 똑같이 사용하면 된다.@MockitoBeanprivate StudyRoomCommandService commandService;  아래는 이곳저곳에서 deprecated 된다는 흔적이다. https://github.com/spring-projects/spring-boot/issues/41157 Make @MockBean respect @Qualifier when replacing beans in application context · Issue #41157 · ..
[테스트 코드] 스프링에서의 Redis 테스트 환경 구축
·
Spring/Test
사이드 프로젝트를 진행하면서 테스트 코드를 작성하고 있다. 이때, Redis에 관한 테스트 코드를 작성하며 알게 된 것들에 관해 포스팅 하려한다. Spring에서 Redis를 테스트 하는 방법 Spring에서 `Redis`를 테스트하는 방법에는 다음과 같은 방법들이 있다.로컬 Redis(서버 or 도커)Embedded RedisTestContainers`Redis`를 테스트 한다면 위와 같은 방법들을 이용해 테스트를 진행할 수 있을 것이다. 근데 저기서 로컬 PC에 직접 `Redis`를 띄워서 테스트 코드를 검증하는 방식이 과연 옳을까?  로컬 Redis 테스트 코드는 어느 환경에서든 동일하게 실행되어야 한다는게 맞다고 본다. `Github Actions` 나 `Jenkins` 에서의 CI/CD 과정에서..
[테스트 코드] @DataJpaTest 사용
·
Spring/Test
@DataJpaTest `@DataJpaTest`는 JPA 관련 테스트를 쉽게 수행할 수 있도록 도와주는 스프링부트의 테스트 어노테이션이다. `@DataJpaTest` 어노테이션은 기본적으로 JPA 관련 설정만 활성화하고, 레포지토리 테스트에만 필요한 컴포넌트들을 로드한다.(즉, JpaTest에 필요한 최소한의 빈을 불러오므로, @Configuration 빈이 포함되어 있지 않음)  `@DataJpaTest`를 활용한 JPA 관련 테스트를 진행하며 필요한 간단한 설정에 대해 기록해두고자 이번 포스팅을 진행한다.   `@DataJpaTest` 사용 코드@DataJpaTest@Import({JpaAuditingConfig.class, QueryDSLConfig.class})@AutoConfigureTestD..