🧊 @Immutable

정의

@ImmutableHibernate에서 엔티티를 읽기 전용으로 취급하도록 지정하는 애너테이션이다. 조회는 가능하지만 변경 감지를 수행하지 않기 때문에 사실상 수정 대상에서 제외된다.

조회 전용 테이블, 통계용 데이터, 로그성 데이터처럼 수정이 필요 없는 데이터에 주로 사용한다.

🧩 역할

  • 엔티티를 읽기 전용으로 취급한다
  • Hibernate의 변경 감지를 비활성화한다
  • 수정 대상이 아닌 데이터 모델을 명확히 표현한다
  • 읽기 중심 데이터에 대한 불필요한 변경 처리 비용을 줄인다

🛠 사용법

엔티티에 적용

import org.hibernate.annotations.Immutable;

@Entity
@Immutable
public class ReadOnlyEntity {

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

    private String name;
}

🧩 특징

  • 변경 감지를 수행하지 않는다
  • 업데이트 대상에서 제외되는 성격이 강하다
  • 읽기 전용 데이터에 적합하다
  • Hibernate 전용 기능이다

⚠️ 주의사항

  • JPA 표준 애너테이션이 아니라 Hibernate 전용 기능이다.
  • 수정이 필요한 엔티티에는 사용하지 않는 것이 좋다.
  • 조회 결과를 애플리케이션에서 바꿔도 영속 상태 변경으로 이어지지 않을 수 있다.
  • 읽기 전용 성격이 분명한 데이터에만 사용하는 것이 안전하다.

📌 정리

  • @Immutable은 엔티티를 읽기 전용으로 다루기 위한 Hibernate 애너테이션이다.
  • 변경 감지를 막아 읽기 전용 데이터를 명확히 표현한다.
  • 수정이 필요한 모델에는 사용하지 않는 것이 좋다.

연결문서

댓글남기기