벌크 연산이란? 벌크 연산은 쿼리 한 번으로 여러 테이블의 로우를 변경하는 것이다. 즉 대량의 데이터를 수정(update, delete문)과 삭제하는 연산이다. 벌크 연산시 주의할 점? 벌크 연산을 사용할 때는 주의할 점이 있는데 그것은 벌크 연산은 영속성 컨텍스트를 무시하고 DB에 바로 쿼리를 실행하는 것이다. 아래 예제를 통해 무엇이 문제인지 알아보았다. 문제점 예제Book.java@Entitypublic class Book { @Id @GeneratedValue private Long id; private String author; private String bookName; // getter, setter 생략}Main.java// 엔티티 매니저 생력System.o..
준영속 엔티티란? 준영속 엔티티는 영속성 컨텍스트에서 관리하지 않는 엔티티이다. 이러한 준영속 엔티티를 수정하는 방법은 아래 예제를 통해서 알아보았다. 이렇게 준영속 엔티티가 생기는 경우는 등록 후 수정 화면에서 수정 폼을 전송할 때 객체를 통해서 전달 받게 되는데 해당 객체는 이미 DB에 저장 되었던 객체 또는 엔티티이며 식별자가 존재하게 된다. 그러나 영속성 컨텍스트에서는 관리하지 않는다. (단순히 컨트롤러를 통해 전달 받은 객체이기 때문) 1. 변경 감지 기능 사용 준영속 엔티티는 관리하지 않는 엔티티이므로 이 엔티티의 식별자를 추출하여 이를 영속성 컨텍스트에서 관리하는 엔티티로 생성 후 변경 감지 기능을 사용하여 수정할 수 있도록 한다. 예제 아래 예제의 주석은 웹 어플리케이션으로 가정하여 등록 ..
임베디드 타입이란? 임베디드 타입은 기본 값 타입을 모아서 만들어진 복합 값 타입이라 한다. 아래 예제를 통해 알아보았다. 임베디드 타입 예제 아래 예제의 회원 엔티티는 간단하게 이름, 주소, 주소 상세, 우편 번호를 가진다. 그런데 주소, 주소 상세, 우편 번호는 하나의 객체로 표현이 가능한데 이를 임베디드 타입으로 정의하였다. Member.java@Entitypublic class Member { @Id @GeneratedValue private Long id; private String userName; @Embedded private Address address; // getter, setter 생략}Address.java(임베디드 타입)@Embeddable..
즉시 로딩과 지연 로딩이란? 아래 예제를 통해서 즉시 로딩과 지연 로딩에 대해서 알아보았다. 엔티티, 테이블 관계도 즉시 로딩이란? 즉시 로딩은 단어 의미대로 해석할 수 있으며, JPA 상에서 데이터를 조회할 때 연관된 모든 객체의 데이터까지 한 번에 불러오는 것이다. 즉시 로딩 예제 아래 Member 클래스의 Team 참조 변수에 FetchType.EAGER를 걸었는데 이는 Team도 같이 한번에 불러오는 즉시 로딩이다. Member.java@Entitypublic class Member { @Id @GeneratedValue private Long memberId; private String userName; @ManyToOne(fetch = FetchType.EAGER) ..
