backend

· Backend/JPA
JPA N+1 문제 해결하기 JPA 사용시 발생하는 N+1 문제를 해결하는 방법에 대해 정리한 내용입니다. 1. N+1 문제가 발생하는 이유 N+1 문제는 1:N 또는 N:1 연관관계가 설정된 엔티티를 조회했을 때 발생하는 문제입니다. 연관관계가 설정된 엔티티를 한 번에 조회하지 않고 조회된 데이터의 개수(N) 만큼 연관관계의 엔티티에 대해 추가로 조회 쿼리가 실행되는 문제입니다. 조회한 엔티티의 데이터 개수가 10개이면 연관관계의 엔티티를 조회하는 SQL도 10번 실행되어 10번 + 1번 조회하게 됩니다. 이러한 문제는 많은 양의 쿼리가 발생했을 때 성능 저하의 원인이 됩니다. 1.1. 즉시 로딩에서 발생하는 N+1 문제 즉시 로딩이 설정된 연관관계의 엔티티를 조회하는 경우에 N+1 문제가 발생할 수 ..
· Backend/JPA
JPA Infinite Recursion 해결하기 JPA 사용시 발생하는 Infinite Recursion을 해결하는 방법에 대해 정리한 내용입니다. 1. Infinite Recursion (nested exception) 문제가 발생하는 이유 1.1. 양방향 연관관계에서 발생하는 Infinite Recursion JPA를 이용하여 양방향 연관관계를 구성한 경우에 발생하는데 컨트롤러에서는 JSON 형태로 값을 출력하기 위해 타입 변환을 필요로 합니다. 이 때 타입 변환이 필요한 엔티티의 필드가 다른 엔티티를 참조하고, 참조한 엔티티의 필드가 기존의 엔티티를 참조하거나 다른 엔티티를 참조하게 되면서 반복적인 재귀가 일어나 Infinite Recursion 문제가 발생하게 됩니다. 다음과 같이 Board, ..
· Backend/JPA
JPA LazyInitializationException 해결하기 JPA 사용시 발생하는 LazyInitializationException을 해결하는 방법에 대해 정리한 내용입니다. 1. LazyInitializationException 예외가 발생하는 이유 1.1. 지연 로딩(LAZY LOADING) 으로 인하여 발생하는 LazyInitializationException JPA를 이용하여 객체의 양방향 연관관계를 구성한 후에 엔티티를 조회했을 때 LazyInitializationException 예외가 발생하는 경우가 있습니다. FetchType.LAZY 로 연관관계가 설정된 필드는 지연 로딩으로 조회 되는데 이 때 해당 필드의 엔티티를 프록시 객체로 조회하게 됩니다. 프록시 객체로 조회된 엔티티는 초..
Spring Boot Properties 클래스 사용하기 Spring Boot에서 Properties 설정값들을 클래스에 매핑하여 사용하는 방법에 대해 정리한 내용입니다. 1. Properties 클래스 사용하기 Spring Boot에서 설정값을 사용하기 위해서 application.properties 또는 application.yml 파일에 key value 형식의 데이터를 저장하고 다음과 같이 @Value 어노테이션으로 읽어와서 사용하는 경우가 있습니다. public class ApplicationProperties { @Value("${property.name}") private String propertyName; @Value("${property.age}") private String prope..
Spring Boot JPA 알아보기 Spring Boot에서 JPA를 사용하는 방법에 대해 정리한 내용입니다. 1. Spring Boot JPA 1.1. JPA (Java Persistence API) JPA는 EJB(Enterprise Java Beans) 3.0 스펙에서 Hibernate를 기반으로 JavaSE, JavaEE를 위한 영속성 관리와 ORM을 위한 기술 표준입니다. 즉, ORM을 사용하기 위한 표준 API 인터페이스를 정의한 것입니다. JPA를 사용하기 위해서는 Hibernate, OpenJPA, EclipseLink, DataNucleus 등과 같이 JPA를 구현한 ORM 프레임워크를 사용해야합니다. Spring의 Spring Data JPA를 사용하면 JPA를 더 편리하게 사용할 수..
Spring Boot 알아보기 Spring Boot에 대해 알아보고 정리한 내용입니다. 1. Spring Boot 자바 애플리케이션 프레임워크인 스프링은 안정성, 성능, DI(Dependency Injection, 의존성 주입) 등의 강력한 장점을 가지고 있어서 대표적인 프레임워크로 자리 잡았습니다. 그러나 개발 환경 설정에 어려움이 있었고 이러한 단점을 보완하고자 만들어진 것이 스프링 부트입니다. 스프링 부트는 환경 설정을 최소화하고 개발자가 비즈니스 로직에 집중할 수 있게하여 생산성을 크게 향상시켜줍니다. Spring Boot Commercial support Business support from Spring experts during the OSS timeline, plus extended sup..
freestrokes
'backend' 태그의 글 목록