JPA/JPA

SAVE 메서드 주의 사항

lovineff 2020. 6. 9. 10:40

새로운 엔티티인 경우 저장

새로운 엔티티가 아닌 경우 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