본문으로 건너뛰기

Null에 대한 대처들..

가장 많은 익셉션 패턴은 Null 아닐까?
가장 많은 에러 패턴은 Null 아닐까? 라는 생각을 해본다.
실제로 프로젝트에서 내가 만든 소스를 돌리다보면 nullpoint익셉션으로 가장 많이 뻗는거 같고, 쉽게 접한다.
물론.. 나 뿐만이 아니라 다른이가 만들것을 돌려도 nullpoint익셉션이 가장 많이 발생한다 !

이번에 중소 규모의 신규 프로젝트를
혼자 다 맡아서 제로베이스에서 만들어 나가는 경험을 하게 됐는데
entity 작성, db 컬럼 작성(경우에 따라서), 등등의 젤 초기 부분부터 다 하게 되다 보니 알게 된 것들을 몇가지 적어보려 한다.

Null 과의 조우 1 : DB칼럼 확인

DB 쪽에서 테이블 칼럼이 not null 인지 default 인지 먼저 확인을 꼭 해야한다.

null point 가 발생하는 이유는.

  • null 을 참조
  • null 을 파라미터로 넘겼다
  • null 을 선언했다
  • null 을 리턴했다
    등등 일텐데

애시당초 DB에 not null 혹은 default 로 되어있는 칼럼이면 기본적으로 반드시 데이터가 들어가 있기 때문에
앵간에서는 null참조 에러가 발생하거나 null을 파라미터로 넘길 확율이 낮다.

Null 과의 조우 2 : SQL쪽에서 기본값 지정

Oracle에는 nvl, Mysql에서는 ifnull, ANSI SQL 에서는 COALESCE등을 이용한다
물론 사양을 잘 파악하고 기본값을 넣어도 되는것인지 먼저 알아야한다. 공문자면 "" 혹은 '' 을 할건지
숫자면 null일때 0로 처리 할건지 말이다.

Null 과의 조우 3 : Entity 기본값

ORmapper / SQLMapper 혹은 라이브러리 가 제공하는 Entity에 디폴트값을 넣는 기능 을 이용한다.

첨에는
오 이런게 있어? 이거하면 편하겠네? 라고 생각했었는데 막상 적용해서 사용해보니
이 방식은 썩 좋은 방식은 아닌거라고 생각되고.. 사용 할 것이라면 조금더 신중하게 생각을 해봐야 한다.
경우의 수가 좀 많아진다..
중간에 값을 따로 바꿔주거나 해야할일도 생기기 때문이다.

Null 과의 조우 4 : 메서드에서 처리

순수하게 자바쪽에서 처리하는 것이다. null확인을 하고 기본값을 잡아주거나 Optional을 사용한다.

개인적으로는 이것이 가장 무난한것 같다.
1번의 경우에는 오브젝트 자체가 아예 없을때(db에 데이터가 아예 없을때)는 대처가 안되지만.
Optional을 사용하거나, 기본값을 잡아주면 충분히 대응이 가능하다.

Null 과의 조우 5 : 자바관련 서적을 본다 / 블로그 검색을 한다.

그러하다.. null을 다루는 방법에 대해서 기술해놓은 여러가지 자바책을 뒤적거리거나, 블로그 검색을 해보고 똑같이 따라해본다.

1번 2번 3번 4번 다 해보고 조금더 자세히 알고싶거나 조금더 좋은 코드로 작성해보고 싶으면 4번... -0-;;;