
관계형 데이터베이스는 과거부터 현재까지 오랫동안 매우 널리 사용되어 그 안정성이 입증 되었으며, 서비스를 개발함에 있어서 필수불가결한 존재로 남아있다.NoSQL, NewSQL 등 다양한 대안이 나오고 있지만, 현재로서는 RDB를 대체할 정도의 이점을 보여주지 못했으며,

이번에는 JPA를 사용하기 위해 반드시 이해해야 할, Persistence Context에 대해서 알아보겠다.그 전에, 지난 시간에 작성한 User Entity를 실제로 DB에 저장하는 간단한 테스트부터 작성해보자.Spring 프로젝트는 기본적으로 소스 코드는 src/

지난 장에서 Persistence Context의 동작 방식에 대해서 알아봤다.이번 장은 내용이 이어지기도 하므로, 만약 이에 대해 정확히 숙지가 되지 않았다면 다시 저번 장을 보도록 하자.지난 장에서 봤던 내용을 간단히 정리해보면,먼저 User Entity를 생성하고

지금까지 본 내용을 정리해보자.@Entity, @Column 등의 Annotation을 사용하여 DDL을 직접 SQL로 작성하는 것이 아닌, Java Class 작성만으로 테이블을 만들었다.em.persist를 사용하여 SQL을 작성하지 않고 메소드 호출 만으로 Rec

2장 Persistence Context에서 설정에 따라 em.persist 의 동작이 달라질 수 있다고 이야기 했었다.이번 장에서는 @GeneratedValue의 전략을 어떻게 설정 하느냐에 따라 em.persist의 동작이 어떻게 바뀌는지 살펴볼 것이다.이전에 만들

Transaction은 DB에서 매우 중요한 핵심 개념이다.보통 DB에서 수행되는 '작업 단위', '일련의 연산'이라고 표현하는데,Transaction을 처음 접한다면 이런 짤막한 설명으로 이해하기는 어렵기 때문에 예시를 들어서 설명하겠다.Database에 2개의 Ac

학급 - 학생버스 - 승객시험 - 수험생사용자 - 포스트모두 1 : N 관계에 대한 예시다.서비스를 만들다 보면 1:N 관계를 갖는 다양한 데이터를 마주하게 되는데,그 때 @OneToMany, @ManyToOne Annotation을 통해 연관 관계를 맺을 수 있다.매

이번 장에서는 PostgreSQL을 직접 설치하여 실제 DB에 저장된 데이터 및 테이블을 볼 수 있도록 환경을 구성해 볼 것이다.이어지는 장에서 볼 내용을 직접 확인하기 위해 필요하기 때문이다.아래 명령어로 Docker Desktop을 설치한다.macOS 기준이며, W

프로젝트 설정은 8장을 참조하자.이전에 작성한 User, Post Entity를 그대로 활용할 것이다.시작하기 전에, Lombok에서 제공하는 @Builder Annotation을 User, Post Entity에 적용하겠다.적용 후 모습은 다음과 같다.주의할 점은 @

지난 장에서 작성한 코드를 그대로 사용하되,테스트 코드 중 em.clear를 주석 처리하고 테스트를 다시 실행해보자Console 맨 아래로 내려보면 다음과 같은 오류가 발생한다.em.clear를 호출하지 않았기 때문에 이전에 만들었던 user Entity 10개가 여전

9장에서 살펴본 N+1 문제는 EAGER, LAZY를 가리지 않고 발생했다. 이전 장에서 봤던 내용 중 핵심 내용을 코드와 함께 다시 살펴보자. 코드의 순서와 post의 개수를 10개로 살짝 바꿨을 뿐, 지난 번과 큰 차이는 없다. EAGER, LAZY 2가지의