Spring/JPA

Spring/JPA

테스트 시 @ElementCollection 테이블 동적으로 가져오기(테스트 데이터 초기화)

0. 들어가기 전프로젝트 개발을 진행하다가, 테스트에서 테스트 초기화가 제대로 수행되지 않아서 테스트가 실패하는 상황이 있었습니다.결과적으로는 @ElementCollection으로 생성되는 테이블이 동적으로 초기화되지 않아서 발생하는 문제였습니다.그래서 이번 포스팅에서 문제 상황과 @ElementCollection 테이블을 동적으로 가져와서 해결한 방법에 대해서 간단히 다뤄보겠습니다!1. 문제 상황프로젝트에서 하나의 기능을 개발하고, 전체 테스트를 실행했을 때테스트에서 테스트 초기화가 제대로 수행되지 않아서 테스트가 실패하는 상황이 있었습니다. 프로젝트의 테스트에서는 E2E 테스트를 진행할 때 RestAssured를 사용하고 있습니다.이때 RestAssured가 통합 테스트를 수행하는 스레드와 @Tran..

Spring/JPA

[JPA] JPA N+1 문제 및 근본적인 원인에 대한 개인적인 고찰

0. 들어가기 전 JPA를 사용하면서 발생하는 N+1 문제는 널리 알려져 있고, JPA를 사용하다보면 제법 자주 만나게 됩니다. 그래서 N+1 문제를 다룬 블로그나 다른 레퍼런스들이 상당히 많습니다. 저 또한 N+1 문제를 공부하기 위해 많은 글들을 살펴봤었습니다. 하지만, 다른 글들을 읽어보고 더 깊은 N+1 문제에 대한 개인적인 궁금증들이 생겨나고 쉽게 풀리지 않아서 이번 포스팅을 작성하면서 테스트를 진행해보고 기록해보고자 합니다. N+1 문제 및 근본적인 원인에 대해 추론하고 해결방법을 알아보면서, N+1 문제에 대해서 고찰해보도록 하겠습니다! 😃 (뇌피셜 파티가 될 예정입니다.. 🤣) 예시 엔티티는 가장 간단한 Team-Member 엔티티로 구성하여 도메인 이해가 N+1 문제의 이해에 방해되지 않..

Spring/JPA

[JPA] JPA 1:N 관계에서 연관관계 주인을 1 대신 N에 두는 이유

이전에 JPA를 사용해서 1:N 연관관계 매핑을 할때는 연관관계 주인이 1 보다 N에 두는 것이 좋다고 배워서 관성적으로 N이 연관관계 주인으로, FK를 가지게 했습니다. 그러나 왜 연관관계 주인이 1이 되면 좋지 않은 건지 제대로 알지 못하고 사용하고 있었기 때문에 연관관계 주인이 1쪽이 되었을 때의 어떤 점이 안 좋은지를 살펴보려고 합니다! 예시는 Member와 Post의 1:N 관계로 설명하도록 하겠습니다! (멤버가 여러 게시글을 작성할 수 있고, 게시물에는 1명의 작성자만 존재한다고 해봅시다!) 🎯 1. 연관관계의 주인이란? 들어가기에 앞서서, 연관관계의 주인이란 무엇을 말하는지 알아봅시다! 우선 '연관관계의 주인' 이라는 용어가 규칙으로 정해진 용어는 아니지만 JPA를 사용할 때 해당 용어로 많..

Spring/JPA

[JPA] @JoinColumn 파헤치기 (feat. JPA 연관관계별 사용)

✌🏻 0. 들어가기 전 JPA 강의 중에 @JoinColumn을 마스터하면 JPA 연관관계를 어느정도는 다 알 수 있다고 들었다. 그래서, 여러 JPA 개념 중에 @JoinColumn에 대해 파헤쳐보면서 JPA 연관관계를 이해해보려고 한다! 앞으로 설명할 연관관계에서 연관관계별로 다음과 같은 예제로 설명하겠다! 1:1 - student lecture 1:N / N:1 - Line(1) Station(N) 🎯 1. @JoinColumn 이란? JoinColumn 어노테이션 클래스를 번역해보면서 이해해보자. JoinColumn의 최상단 주석에는 JoinColumn에 대한 설명이 나와있다. 맨 위의 내용을 요약하면 다음과 같다. Entity 연관관계 또는 Element Collection을 연결하기 위한 Co..

BE_성하
'Spring/JPA' 카테고리의 글 목록