@NotNull과 @Column(nullable = false)

오젼·2024년 7월 19일
0

https://www.baeldung.com/hibernate-notnull-vs-nullable

결론: @NotNull이 더 권장됨

목적

@NotNull: Bean Validation 명세의 일부로, 엔티티뿐만 아니라 모든 빈에 사용 가능
@Column(nullable = false): JPA 명세의 일부로, 주로 DDL 스키마 메타데이터 생성에 사용

검증 시점

@NotNull: 엔티티 생명주기의 pre-persist 이벤트에서 검증 수행, SQL 쿼리 전송 전에 예외 발생
@Column(nullable = false): 기본적으로 데이터베이스 레벨에서 검증

스키마 생성

@NotNull: Hibernate가 자동으로 not null 제약조건을 칼럼 정의에 추가 (비활성화 가능)
@Column(nullable = false): DDL 생성 시 not null 제약조건 적용

검증 동작

@NotNull: javax.validation.ConstraintViolationException 발생
@Column(nullable = false): 기본적으로 데이터베이스 오류 발생, 但 Hibernate 설정으로 엔티티 레벨 검증 가능

권장 사항

일반적으로 @NotNull 사용을 권장
데이터베이스에 의존하기보다 Bean Validation 표준 규칙을 사용하는 것이 좋음

주의사항

Hibernate 설정을 통해 두 어노테이션의 동작을 세부적으로 조정할 수 있음

0개의 댓글

관련 채용 정보