728x90
반응형
Soft Delete 방식으로 데이터를 관리중이던 나는 @Where 메서드가 Deprecated된 것을 발견하였다...!
이제 뭘 써야 고민하던 중에 Cursor AI 툴로 리팩터링을 참고하며 진행하던중 @SQLRestriction 이라는 어노테이션을 발견할 수 있었다.
보자마자 이건 누가봐도 동일한 방식으로 사용하 수 있겠다 싶어서 내부 소스코드에 대한 설명을 읽어보았다.
Specifies a restriction written in native SQL to add to the generated SQL for entities or collections. For example, @SQLRestriction could be used to hide entity instances which have been soft-deleted, either for the entity class itself
번역 :
@SQLRestriction은 엔터티나 컬렉션에 대해 생성된 SQL에 추가할 수 있는 제한 조건을 네이티브 SQL로 지정하는 데 사용됩니다. 예를 들어, @SQLRestriction을 활용하여 “소프트 삭제(soft delete)“된 엔터티 인스턴스를 숨길 수 있습니다. 이는 엔터티 클래스 자체에 적용할 수도 있습니다.
기존의 @Where 어노테이션과의 차이점
1. @Where은 JPQL 수준에서 동작하며, Hibernate가 자동으로 SQL로 변환시킨다.
2. @SQLRestriction은 더 낮은 네이티브 SQL 조건을 직접 작성해야 하므로 더 많은 제어가 가능하다.
3. 엔터티의 @Filter처럼 동적으로 조건을 설정하거나 복잡한 로직을 SQL로 표현해야 할 때 유용하다.
728x90
반응형
'Spring > JPA' 카테고리의 다른 글
[개념 정리]Spring Boot에서 JPA의 Soft Delete와 Cascade 연관관계 (1) | 2024.12.09 |
---|---|
save the transient instance before flushing (0) | 2024.11.20 |
JPA - DB 연결 예외 : 'url' attribute is not specified and no embedded datasource could be configured. (0) | 2024.06.14 |
JPA - 지연로딩과 즉시로딩 (1) | 2023.12.10 |
JPA - Proxy (2) | 2023.12.10 |