분류 전체보기

·JPA/JPA 정리
이번 시간에는 조회, 저장, 수정 삭제 (CRUD) 시 영속성 컨텍스트에서 어떻게 동작하는지 알아보려고 한다.영속성 컨텍스트 - 조회1차 캐시에서 조회em.find()를 하면 jpa는 우선 1차 캐시에서 엔티티를 조회한다. 1차 캐시에 값이 있을 경우 해당 값을 조회한다.Member member = new Member();member.setId("member1");member.setUsername("회원1");//1차 캐시에 저장됨em.persist(member);//1차 캐시에서 조회Member findMember = em.find(Member.class, "member1");데이터베이스에서 조회1차 캐시에서 우선 조회하고 값이 없을 경우 데이터베이스에서 값을 조회한다.조회한 값은 1차 캐시에 저장한다..
·JPA/JPA 활용 2
OSIV와 성능 최적화Open Session In View: 하이버네이트Open EntityManager In View: JPA(관례상 OSIV라 한다.) OSIV ON spring.jpa.open-in-view : true 기본값최신 스프링 부트 버전에서는 실행을 하면 아래 warn 로그가 출력된다.WARN 72686 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-i..
·JPA/JPA 활용 2
서론이전까지는 컬렉션이 아닌 ManyToOne이나 OneToOne 관계에 대해서만 조인을 했다.이런 경우에는 fetch join으로 쉽게 해결할 수 있었다. 그런데 컬렉션 조회라는 건 OneToMany 조회이다.문제는 DB 입장에서 OneToMany 조인을 하면 데이터가 뻥튀기가 되어버린다.예를 들어 주문을 하나 했다고 하자. 이 Order는 OrderItem과 OneToMany 관계이다. 근데 Order에 딸린 OrderItem이 3개라고 한다면 주문을 하나 했는데 하나의 주문에 OrderItem 3개가 딸려 있어 최종결과가 3줄이 되어버린다. 이 경우에는 최적화하기가 어렵다. ManyToOne이나 OneToOne 같은 건 fetch join을 하거나 DB 입장에서는 left out join 해서 한 ..
·JPA/JPA 활용 2
주문 + 배송정보 + 회원을 조회하는 API를 만들어보자.그리고 위 API를 사용하여 지연 로딩 때문에 발생하는 성능 문제를 단계적으로 해결해 보자.엔티티엔티티 부분에는 모든 필드들은 작성하지 않았고 연관관계에 있는 엔티티 객체 타입 필드들만 적어놨다.Order@Entity@Getter@Setter@Table(name = "orders")@NoArgsConstructor(access = AccessLevel.PROTECTED)public class Order { @Id @Column(name = "order_id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne(fetch = Fet..
an_jjin
'분류 전체보기' 카테고리의 글 목록 (17 Page)