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 설정을 통해 두 어노테이션의 동작을 세부적으로 조정할 수 있음