새로운 엔티티인 경우 저장
새로운 엔티티가 아닌 경우 MERGE 함 ***
@GeneratedValue 인 경우 식별자가 없을 경우 SAVE 가 호출되나
@Id 만 사용한 경우 식별자가 있는 것으로 간주하여 SELECT SAVE가 호출된다.
매우 비효율적이므로 implements Persistable<ID>의 isNew를 구현하여 직접 SAVE가 호출되도록 할 수 있다.
@Entity
@Getter
@EntityListeners(AuditingEntityListener.class)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Item implements Persistable<String> {
@Id
private String id;
@CreatedDate
private LocalDateTime createdDate;
public Item(String id) {
this.id = id;
}
@Override
public boolean isNew() {
return createdDate == null;
}
}
'JPA > JPA' 카테고리의 다른 글
조건문 매칭 (0) | 2020.12.01 |
---|---|
insert, update, delete 주의 사항(쿼리 실행 순서) (0) | 2020.11.11 |
사용자 정의 리포지토리 구현 (0) | 2020.06.09 |
페이징 처리 (0) | 2020.06.09 |
Auditing (0) | 2020.06.09 |