@ExtendWith- JUnit5 부터 '@RunWith' 어노테이션이 '@ExtendWith' 로 대체 되었다.- 이를 사용해 JUnit 테스트 에서 특정 확장 기능을 활성화할 수 있다.EX) @ExtendWith(SpringExtension.class) SpringExtension.class- 스프링 프레임워크에서 제공하는 JUnit5 확장 기능- JUnit5 테스트 실행에 스프링 테스트 컨텍스트를 통합하고 관리하는 역할- 스프링의 테스트 관련 기능을 JUnit5 환경에서 활용할 수 있도록 도와줌. 테스트가 실행될 때, SpringExtension은 다음과 같은 작업을 수행합니다:스프링 애플리케이션 컨텍스트의 로딩과 캐싱: 테스트가 스프링 설정을 기반으로 실행될 수 있도록 애플리케이션 컨텍스트를 ..
Spring
콘솔에 이와 같은 에러 메시지가 나온다. 에러 내용은 "dto" 패키지를 찾지 못하는 상황이다. [해결방법] Gradle 에서 'compile.Java' 를 눌러 자바 컴파일을 다시 해준다. 새로운 패키지를 만들고 파일을 입력하면 Q파일에 등록되지 않아서 생기는 문제이다. ** 주의 build - clean 을 누르게 되면 Q 파일로 등록되지 않은 파일들은 모두 사라진다.
[build.gradle] plugins { id 'java' id 'org.springframework.boot' version '3.2.2' id 'io.spring.dependency-management' version '1.1.4' } group = 'study' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '21' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa..
① x ToOne (OneToOne, ManyToOne) 관계는 모두 Fetch Join 한다. (ToOne 관계는 row 수를 증가시키지 않음으로 페이징 쿼리에 영향을 주지 않기 때문이다.) ② 컬렉션은 지연로딩으로 조회 (Fetch Join으로 조회하지 않고 그냥 둔다.) ③ 'hibernate.default_batch_fetch_size' 와 '@BatchSize' 를 적용한다. 지연로딩 성능 최적화를 위해, 'hibernate.default_batch_fetch_size' : 글로벌 설정 '@BatchSize' : 특정 엔티티 설정 을 적용한다. ① x ToOne (OneToOne, ManyToOne) 관계는 모두 Fetch Join 한다. 'Order' - 'Member' : ManyToOne ..
※ 페치 조인은 대부분의 'N+1' 문제를 해결 할 수 있다. ※ Member 엔티티 / Team 엔티티 0. 필드 (field) 종류 ① 상태필드 (state field) : 단순히 값을 저장하기 위한 필드 * 연관필드 (association field) : 연관관계를 위한 필드 ② 단일 값 연관필드 : @ManyTo"One", @OneTo"One" 연관관계에 해당하며, 대상이 '엔티티' 이다. (ex) m.team) ③ 컬렉션 값 연관필드 : @OneTo"Many", @ManyTo"Many" 연관관계에 해당하며, 대상이 '컬렉션' 이다. (ex) m.order) ※ 컬렉션 값 연관필드의 탐색 컬렉션 값 연관필드(t.members) 에서 한번더 탐색(.username) 이 불가능하다. 만약, 탐색을 원..
** 지연 로딩은 어떠한 상황에 사용해야 하는가? ** * MEMBER의 ID와 USERNAME 만을 조회하여 이용하고자 할때, Team 객체 조회는 필요한가? 당연하게도 Team 조회는 불필요하다. 이 경우 Member.class의 team 필드를 지연로딩(FetchType.LAZY) 설정 하면된다. * findMember : em.find() 를 통해 생성한 객체 정보 확인 * findMember.Team 필드의 객체 정보 확인 SELECT SQL 쿼리를 보면, Team 과 Member를 INNER JOIN 으로 동시에 조회 해오는 것이 아니라, Member 만 먼저 조회해 온다. " findMember : em.find() " 의 클래스는 '실제 엔티티' " findMember.Team 필드 " 의..