Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

도메인에서 null 체크 -> @NotNull vs @Column(nullable=false) #4

Open
Yiseull opened this issue Nov 14, 2023 · 0 comments
Open

Comments

@Yiseull
Copy link
Owner

Yiseull commented Nov 14, 2023

도메인에서의 null 검증 어떻게 하는 것이 좋을까? @NotNull vs @column(nullable=false)

1️⃣ 처음에 갖고 있던 생각

도메인은 최소한의 의존성만 가져가고 가능한 순수하게 유지되어야 한다. 따라서 도메인의 값이 초기화 될 때 null 검증 로직을 직접 작성하여 애플리케이션 단에서 한 번 검증하고 @Column(nullable=false)를 추가해 DB 단에서도 null을 검증할 수 있도록 추가하는 것이 좋다.

만약 @NotNull을 사용하게 된다면 Bean validation 의존성을 추가해야 할텐데 null 검증 때문에 validation 의존성을 추가하는 것은 도메인의 외부 의존성만 늘리는 것이라고 생각한다.

2️⃣ 두 번째 생각

기존에는 도메인을 최대한 외부에서 격리시켜서 순수하게 가져가야 한다는 생각이었다. 그런데 @NotNull을 사용하자는 입장에 설득(?) 당해버렸다.

@NotNull을 엔티티에 붙이면 Application과 DB 단에서 모두 null 검증을 할 수 있다고 한다. 애플리케이션에서 null 검증을 해주는 건 아는데 어떻게 DB까지...? 알고보니 jpa 속성 중 ddl-auto=create로 되어있으면 테이블 생성 시 @NotNull이 붙어있는 컬럼에 not null이 붙어서 생성된다. 이번에 찾아보면서 처음 알게 된 사실이다!🤩

무조건 @NotNull을 사용하자는 입장은 아니고 만약 DTO 검증이나 다른 이유로 Bean validation 의존성이 이미 추가되어있는 상태라면, @NotNull을 활용하자는 것이다.

나를 설득시킨 참고자료들

@Yiseull Yiseull self-assigned this Nov 14, 2023
@Yiseull Yiseull changed the title 도메인에서 null 체크 -> @NotNull vs Objects.requireNonNull 도메인에서 null 체크 -> @NotNull vs @Column(nullable=false) Nov 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant