무지를 아는 것이 곧 앎의 시작

JPA 2

Hibernate in_clause_parameter_padding 속성을 사용한 메모리 절약

문제 개발하다 보면 무리한 join을 회피하기 위해 in 절 쿼리를 사용해야할 경우가 많다. public interface ExampleRepository extends JpaRepository{ List findByIdIn(List ids); } 위와 같은 코드를 작성했을 때 다음과 같은 쿼리가 호출될 것이다. select ... from example where id in (? ,? ,? ...) 그런데 여기서 보면 ids는 고정된 크기가 아니며, 요청된 갯수에 따라서 쿼리문이 길어질 수 있다. 애초에 RDBMS 자체에서 갯수 제한을 두기도 하거니와 너무 많은 요소가 포함되었을 때 DB에 한번의 요청이 너무 많은 작업을 요구하기 때문에 in 절에 너무 많은 갯수를 넣는건 바람직하지 못하다. 그래서 적..

JPA 2023.12.14

[JPA] 즉시 로딩과 지연 로딩, 지연 로딩을 써야하는 이유

JPA에서는 연관 관계로 설정된 엔티티를 조회할 때 즉시 로딩과 지연 로딩 두 가지 방식이 있다. 당장 지연 로딩으로 검색을 해보면 두 방식중 지연 로딩이 즉시 로딩보다 권장되는 분위기다. 이번 포스팅에선 즉시 로딩과 지연 로딩의 차이점과 왜 두 방식중 지연 로딩이 추천되는 지 알아보려 한다.🧐 학습테스트 준비 Team 엔티티 @Entity public class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String teamName; @OneToMany(mappedBy = "team") private List members = new ArrayList(); protected Team() {..

JPA 2022.07.26