profile
배울 것이 많은 초보 개발자 입니다!
post-thumbnail

[Spring Data JPA] findByXXXId 는 불필요한 join을 유발한다

프로젝트에서 JPA를 사용하던 도중 이상한 부분을 발견했습니다. 엔티티 끼리 연관관계가 있을 때 어떤 곳에서는 findByXXX 형태의 쿼리 메서드를, 어떤 곳에서는 findByXXXId 형태의 쿼리 메서드를 사용하고 있는데요, findByXXX를 사용했을 때는 생각한

2022년 9월 16일
·
1개의 댓글
·
post-thumbnail

API의 쿼리 개수 세기 - (1) 하이버네이트를 이용한 카운팅

JPA를 사용하게 되면 쿼리를 직접 작성하지 않다 보니(물론 native query를 사용하는 때도 있습니다만 일반적으로는) 예상보다 많은 쿼리가 실행되는 경우가 많습니다. 대표적으로 N+1 문제를 예로 들 수 있겠네요. 그러다 보니 쿼리가 몇 번이나 날아가는지를 확인

2022년 8월 16일
·
0개의 댓글
·
post-thumbnail

JPA 프록시의 사실과 오해

JPA에는 연관관계 로딩 방식 중 지연 로딩이라는 방식이 있습니다. 연관된 엔티티를 실제로 이용하기 전까지 조회하지 않는 것이죠. 실제로 사용하는 시점 전까지 조회를 미루기 때문에 즉시 로딩 방식에 비해 최초 로딩 시간이 빠르고 메모리 소모가 더 적다는 장점이 있습니다

2022년 7월 19일
·
2개의 댓글
·
post-thumbnail

JPA의 엔티티에 protected, public 기본 생성자가 필요한 이유

JPA는 엔티티에 기본 생성자, 즉 아무런 매개변수를 받지 않는 생성자를 만드는 것을 강제하고 있습니다. JPA 구현체마다 스펙이 조금 달라서 기본 생성자를 만들지 않아도 정상적으로 작동하는 경우가 있지만, `엔티티에는 기본 생성자가 있어야 한다`가 공식 스펙이기 때문

2022년 7월 9일
·
0개의 댓글
·
post-thumbnail

JPA 스터디 (4) 프록시와 연관관계 관리

엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아님엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 제공지연 로딩(Lazy Loading)지연 로딩 기능을 사용하려면 실제 엔티티 객체 대신 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요

2022년 6월 23일
·
0개의 댓글
·
post-thumbnail

JPA 스터디 (3) 다양한 연관관계 매핑, 고급매핑

다대일(@ManyToOne)일대다(@OneToMany)일대일(@OneToMany)다대다(@ManyToMany)테이블은 방향이라는 개념 x객체에서 한 쪽만 참조하면 단방향, 양쪽이 서로 참조하면 양방향데이터베이스 외래 키를 관리하는 객체보통 외래 키를 가진 테이블과 매핑

2022년 6월 23일
·
0개의 댓글
·
post-thumbnail

JPA 스터디 (2) 엔티티 매핑, 연관관계 매핑 기초

김영한님의 자바 ORM 표준 JPA 프로그래밍 강의와 책을 바탕으로 진행되는 스터디입니다 JPA를 사용해서 테이블과 매핑할 클래스에 붙이는 어노테이션name: JPA에서 사용할 엔티티 이름을 지정(기본값 클래스 이름)다른 패키지에 이름이 같은 클래스가 있을 경우 이름을

2022년 6월 16일
·
0개의 댓글
·
post-thumbnail

JPA 스터디 (1) JPA 소개, 영속성 관리

김영한님의 자바 ORM 표준 JPA 프로그래밍 강의와 책을 바탕으로 진행되는 스터디입니다 SQL 의존적인 개발을 피하기 어렵다.무한 반복, 지루한 코드INSERT… UPDATE… SELECT… DELETE…자바 객체 → SQL, SQL → 자바 객체 무한 반복만약 객체

2022년 6월 16일
·
0개의 댓글
·
post-thumbnail

Entity, DAO, DTO가 무엇이며 왜 사용할까?

개인적으로 Spring Boot를 가지고 CRUD를 구현한 Todo-list를 만들어면서, Spring Data JPA를 사용하게 되었다. JPA를 사용하면서, 생전 처음 보는 Entity, DAO, DTO 개념을 사용하게 되었는데, 앞으로 계속 많이 쓰게 될 것 같아

2021년 2월 4일
·
1개의 댓글
·