안녕하세요 프로젝트르 진행하면서 JPA의 강력한 기능인 중 하나인 1차 캐시가 언제 동작하는 지 잘 모르는 고 사용하시는 분들이 존재해서 한번 작성하게 되었습니다. 1차 캐시이 무엇인지에 대한 설명은 많은 분들이 잘 작성하셨기 때문에 간단하게 설명하고 "언제 동작하는가?" 에대해서 설명을 하고자합니다. 1차 캐시란? JPA하면 1차 캐시를 빼놓을 수가 없는데요 성능적으로 많은 이점을 가지고 갈 수 있는 강력한 기능이라고 생각합니다. 1차캐시는 영속성 컨텍스트에 Entity를 보관을 하는데 보관시 @Id를 기반으로 보관을 합니다. 때문에 JPA는 우선 1차캐시를 확인하여 해당 Entity가 있는지 여부를 확인 하고 있다면 캐시에서 가져다 사용을 하고 없다면 DB에 쿼리를 날려 해당 데이터를 가지..
안녕하세요. 오늘은 JPA 작업을 하시면서 발생하는 양방향 OneToOne 관계에서 주인과 주인이아닌 LazyLoding(지연로딩)으로 설정 했지만 적용이 안되고 eagerLoding(즉시로딩)으로 조회해서 발생하는 흔히 말하는 N+1문제가 왜 발생하는지 알아 보려고 합니다. 이문제는 정확히는 주인관계에서는 LazyLoding이 되지만 주인이 아닌 Entity에서 조회를 할시 eagerLoding 발생하는 문제입니다. 그러면 이제 시작하겠습니다. 아래의 연관간계는 쉬운 설명을 위하여 편하게 관계를 맺은점을 참고 해주셨으면 합니다. 연관관계 설정 및 TEST_CASE 작성 Entity 구성은 2개 Product(상품)과 Product_Desc(상품설명)으로 구성되며 연관관계의 주인은 product로 위의 ..
안녕하세요 오늘은 JPA 사용시 @Entity를 외래키의 값을 통해 조회하는 방법을 알아 보려고 합니다. 대부분 간단한CRUD의 경우 JpaRepository를 통해 쉽고 빠르게 처리합니다. 하지만 Entity의 컬럼값으로 조회는 어떻게 하는지 알지만 FK의 값으로 조회하고 싶은경우 findby를 어떻게 작성해야 될지 모르는 경우가 많아 이렇게 글을 작성하게 되었습니다. Entity Member.class @ToString @Getter @Setter @Entity @Builder @Table(name = "member") @AllArgsConstructor @NoArgsConstructor public class Member{ @Id @GeneratedValue(strategy = GenerationT..