티스토리 뷰

공부흔적/JPA

TypeORM과 JPA에서의 Soft Delete

주디 𝙹𝚞𝚍𝚢 2024. 11. 21. 11:23

 자바 진영의 JPA와 TypeScript 진영의 TypeORM은 비슷한듯 다르다.

 서비스 개발을 하면서 TypeORM을 사용했을 때는 TypeORM로 데이터를 조회할 때 자동으로 SoftDelete된 데이터는 제외해주는 기능이 있었는데, JPA에는 그런 기능이 없는 것이다.

import jakarta.persistence.*;
import org.hibernate.annotations.*;

@Entity
@SQLDelete(sql = "UPDATE my_table SET is_deleted = true WHERE id = ?")
@Where(clause = "is_deleted = false")
public class MyEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @Column(name = "is_deleted")
    private Boolean isDeleted = false;

    // getters and setters
}

 JPA에서는 위에서 보면 알 수 있듯, @SQLDelete로 DELETE 대신 특정 SQL이 실행되도록 설정해주고, @Where로 조회시 자동으로 조건문이 추가되도록 해준다.

기능 TypeORM JPA + Hibernate
Soft Delete 설정 @DeleteDateColumn @SQLDelete + @Where
기본 조회 deletedAt IS NULL 자동 추가 @Where로 조건 명시 필요
복구 기능 repository.restore(id) 별도 복구 로직 작성 필요
Native Query 지원 withDeleted 옵션으로 쉽게 제어 가능 Native Query는 수동으로 조건 추가 필요

 이렇게 보니 TypeORM이 좀 더 이용하기 편리한 것 같다.

300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함