JPA 3

DB N+1 문제해결(JPQL의 join fetch 사용)

N+1문제란 DB에서 어떠한 데이터를 불러올때 해당 엔티티의 연관관계(N)만큼 쿼리가 추가 발생하는 문제이다. 이러한 문제를 JPQL의 join fetch를 사용하여 발생하는 쿼리의 수를 줄일수가 있다. 테스트를 위한 세팅 @Profile("n-plus-one-problem") @Configuration public class NPlusOneProblemConfig { private EntityManager em; private EntityTransaction tx; @Bean public CommandLineRunner testJpaFetchStrategyRunner(EntityManagerFactory emFactory) { this.em = emFactory.createEntityManager();..

JPA의 Entity 매핑 (feat. Auditable, GeneratedValue 전략)

Entity와 테이블간의 매핑 @Getter @Setter @Builder @Entity // 1. public class Member extends Auditable { // 8. @Id // 2. @GeneratedValue(strategy = GenerationType.IDENTITY) // 3. private Long memberId; @Column(nullable = false, updatable = false, unique = true) // 4. private String email; @Column(length = 100, nullable = false, name = "FULL_NAME") private String name; @Column(length = 13, nullable = fals..

JPA(Java Persistence API)

JPA JPA(Java Persistence API)는 Java 진영에서 사용하는 ORM(Object-Relational Mapping) 기술의 표준 사양(또는 명세, Specification)이다. Java의 인터페이스로 사양이 정의되어 있기 때문에 JPA라는 표준 사양을 구현한 구현체는 따로 있다. Hibernate ORM Hibernate ORM는 JPA 표준 사양을 구현한 구현체중 하나이다. 쉽게말하면 JPA라는 표준사양을 구현하는 API이며 JPA에서 지원하는 기능 이외에 Hibernate 자체적으로 사용할 수 있는 API 역시 지원하고 있다. JPA는 Java Persistence API의 약자이지만 현재는 Jakarta Persistence라고도 불린다. 데이터 액세스 계층에서의 JPA 위치..