@Where Deprecated되고 새로 쓰이는 @SQLRestriction

2024. 11. 20. 03:13·Spring/JPA
728x90
반응형
SMALL

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
반응형
SMALL

'Spring > JPA' 카테고리의 다른 글

[개념 정리]Spring Boot에서 JPA의 Soft Delete와 Cascade 연관관계  (1) 2024.12.09
save the transient instance before flushing  (1) 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
'Spring/JPA' 카테고리의 다른 글
  • [개념 정리]Spring Boot에서 JPA의 Soft Delete와 Cascade 연관관계
  • save the transient instance before flushing
  • JPA - DB 연결 예외 : 'url' attribute is not specified and no embedded datasource could be configured.
  • JPA - 지연로딩과 즉시로딩
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
    250x250
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (325)
      • 면접 준비 (22)
        • OS (6)
        • Spring Security (0)
        • Java (3)
        • DB (11)
        • Network (3)
      • ElasticSearch (2)
      • Kafka (4)
      • Spring (22)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (2)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      jsp request
      레디스
      리눅스마스터2급정리
      자바 반복문
      JavaScript
      HTML
      spring redis
      Springframework
      JS
      JSP
      redis
      리눅스마스터2급
      프로그래머스
      Spring Data Redis
      자바 알고리즘
      자바 면접질문
      java
      redis 채팅
      자바
      리눅스
      자바 면접
      Til
      jsp기초
      스프링프레임워크
      Spring
      자바기초
      springsecurity
      CSS
      백준
      자바스크립트
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    @Where Deprecated되고 새로 쓰이는 @SQLRestriction
    상단으로

    티스토리툴바