inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

사용자가 기존 데이터 수정시에 null 구분 어떻게하시나요?

371

henry

작성한 질문수 9

0

회원이 회원정보를 변경하였습니다.

변경된 데이터는 "자기소개" 부분이며, 값을 비워버렸습니다.

그럼 백엔드 입장에서는 아래 두가지 경우를 어떻게 구분할 수 있을까요?

 

제가 찾은 방법은

  1. 수정시에도 모든 컬럼 갑을 받아서 기존 DB의 로우 전체를 업데이트 시킨다.

  2. 사용자가 의도적으로 필드를 비워둔 경우 null 이 아닌, null을 의미하는 다른 대체 문자를 이용한다.
    - 이 경우 null 은 필드변경이 없는 경우

     

이외에 보편적으로 이용하는 방법이나 스마트한 방법이 있을까요...?

스프링부트 db jpa

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

henry님, 사용자가 ‘자기소개’ 데이터를 변경했을 때 실제로 정보를 비워둔 것인지 아니면 수정을 하지 않아서 null인지 구분하는 문제를 고려 중이시군요. 이런 종류의 문제는 상황에 따라 다르게 접근할 수 있으며, 각각의 접근 방법에 대한 장단점을 파악하고 적절한 전략을 선택하는 것이 중요합니다.

일반적으로 말씀해주신 방법 외에도 Spring Data JDBC를 사용하는 경우 @EmbeddedonEmpty 속성을 활용하는 방법이 있습니다. 예를 들어, MyEntity 클래스에서 @Embedded(onEmpty = USE_NULL)을 사용하면, null인 경우 해당 엔티티의 embeddedEntitynull로 설정할 수 있습니다. 반대로 onEmpty = USE_EMPTY 옵션을 사용하면 결과 집합에서 null 값을 허용하는 생성자를 사용하여 새 인스턴스를 생성하게 할 수 있습니다. 이 방식을 사용하면 사용자가 값을 의도적으로 비워둔 경우와 수정하지 않아서 null인 경우를 프로그램 내에서 구분할 수 있습니다.

두 번째 방법으로는 사용자가 선택적으로 데이터를 비운 경우를 처리하기 위해 ‘대체 문자’ 또는 특정 값을 사용하기도 합니다. 예를 들어 ‘사용자가 정보를 제공하지 않음’을 나타내는 특수한 문자열이나 표시를 데이터베이스에 저장하여, 이를 통해 필드의 null 값이 의도적으로 비워진 것인지 아니면 수정되지 않은 것인지 구분하는 방법도 있습니다.

이 방법들 외에도 애플리케이션 또는 DB 레벨에서 null 값을 처리하는 추가적인 로직을 구현할 수도 있습니다. 예를 들어, DTO(Data Transfer Object)에서 해당 필드가 변경되었는지 추적하는 플래그를 둘 수도 있습니다. 사용자가 양식을 제출할 때 해당 플래그를 업데이트하여, 실제로 필드를 비운 것인지 아니면 수정하지 않은 경우인지를 구분하는 방법이 될 수 있습니다.

결론적으로, 사용 사례와 기대하는 동작을 토대로 적절한 접근 방법을 선택하는 것이 좋으며, 각 경우의 복잡성과 구현상의 제약을 고려해야 합니다.

벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?

0

21

2

inheritance startegy 선택시 고려사항

0

21

1

Entity 동등성 비교

0

18

1

패키지 구분에 대해 궁금한게 있습니다

0

26

2

스프링부트 서버 에러나요

0

26

1

RepositoryTest의 패키지 위치가 domain인 이유

0

36

2

도메인 모델에서 관계와 규칙을 구분하는 방법

0

50

2

16 강의 메세지 retryCount의 의도

0

29

2

JPA Repository 질문이 있습니다!

1

38

2

페이지네이션 처리를 쿼리에서 하는 방식 질문

1

38

1

UserService, CertificationService 책임 분리 기준 질문

0

28

1

실무 조언 관련 질문입니다.

0

44

1

sdk 설정 오류

0

53

2

H2데이터베이스 파일 생성

0

56

2

SpringBoot 4.X에서의 Querydsl 설정

0

92

2

REQUIRES_NEW 해결 방법에 대해서 질문있습니다!!

0

31

1

오탈자 - @Transactional

0

56

1

Dto와 Entity 사용 관련 질문

0

34

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

0

52

2

EC2 실습 중 docker-compose / docker ps 실행 시 권한 오류 문의

2

74

1

application.properties 작성 관련 질문

0

49

2

색깔구분

0

48

3

gradlew, java -jar 로 애플리케이션 실행시키기에서

1

52

1

리액트 관련 질문이 있습니다.

0

65

2