[JPA] @DataJpaTest 사용할 DB 변경 포스팅 썸네일 이미지

백엔드/JPA

[JPA] @DataJpaTest 사용할 DB 변경

목적 @DataJpaTest에 대해 알아보고 DB설정을 변경하고자 함 목차 @DataJpaTest란? 테스트 DB 변경하기 1. @DataJpaTest란? 주석 내용을 보면 아래와 같이 나와있다. Annotation for a JPA test that focuses only on JPA components. 오직 JPA 구성 요소에만 초점을 맞춘 JPA 테스트를 위한 애노테이션이다. JPA의존성을 추가하여 사용할 수 있는 모든 JPA 구성요소들을 테스트할 수 있다. Using this annotation will disable full auto-configuration and instead apply only configuration relevant to JPA tests. 다른 설정은 비활성화 시키고,..

2021.09.16 게시됨

[JPA] EnumType 올바르게 사용하기 포스팅 썸네일 이미지

백엔드/JPA

[JPA] EnumType 올바르게 사용하기

목적 @Enumerated을 사용하여 컬럼에 들어간 값을 확실히 식별하기 위함 목차 @Enumerated와 기본값 올바르게 사용하기 1. @Enumerated와 기본값 Enumerated 애노테이션은 특정 필드가 열거형으로 저장되어야 할때 사용된다. enum타입으로 선언된 필드 위에 사용한다. 하지만 그대로 사용했다가는 문제가 발생할 수 있다. @Enumerated의 기본값은 ordinal로 설정되어있다. ordinal은 enum에서 열거형의 순서를 나타낸다. 따라서 기본값이 ordinal로 설정되어있다는 말은 DB에 저장될 때 순서값 즉, 숫자로 저장된다는 것이다. 캐나다에 사는 kim과 서울에 사는 park객체를 만들고 DB에 저장하면 숫자로만 저장된다. 추후에 두번째 있던 CANADA가 마지막순서로..

2021.06.19 게시됨

[JPA] N+1 문제 포스팅 썸네일 이미지

백엔드/JPA

[JPA] N+1 문제

목적 의도하지 않는 쿼리문이 실행되는 것을 막아 불필요한 네트워크 통신 비용을 줄이기 위함 목차 JPA의 N+1이란? JPA의 기본적인 로딩 방식 JPA에서 Lazy로딩의 문제점 JPA의 N+1의 해결 방법 1. JPA의 N+1이란? 1번의 쿼리를 날렸을 때 의도하지 않은 N번의 쿼리가 추가적으로 실행되는 것을 의미한다. 이는 불필요한 네트워크 비용을 증가시킨다. 2. JPA의 기본적인 로딩 방식 JPA는 @ManyToMany, @OneToMany를 사용하는 필드에는 지연로딩을 적용한다. 지연로딩이란? 가능한 한 객체의 초기화를 지연시키는데 사용되는 디자인 패턴이다. 데이터가 불필요한 시점이 아닌 꼭 필요한 시점에 초기화를 시킬 수 있어 시간소비와 메모리 사용량을 줄일 수 있다. 그래서 JPA는 @**T..

2021.05.01 게시됨