teba123
75
2022-01-13 11:22:07 작성 2022-01-13 11:22:24 수정됨
7
309

보통 회원가입 기능에서 가입일시 db에 저장할때 시간 어떻게 하나요?


dto로 받는거 말고 서버에서 now()로 저장하는거 맞나요?

1
  • 답변 7

  • BellBoi
    172
    2022-01-13 11:24:38

    저는 프론트에서 생성해서 넘기거나 service에서 생성해여

  • 헛경력개발자
    865
    2022-01-13 11:25:37

    MSSQL 이면 GETDATE()

    오라클이라면 SYSDATE,


    넘어오는 값은 믿지 마세요..

  • 헛경력개발자
    865
    2022-01-13 11:27:00 작성 2022-01-13 11:29:12 수정됨

    프론트에서 넘어오는 시간값은 절대절대 믿으면 안됩니다.


    db자체가 아닌 java에서 시간을 생성하는 것은

    파싱의 불편함이 초래되고,


    이전에 제가 했던 질문 서버 실행 시간 차이 에서 깨닫게 된 내용인데,

    jvm 시간도 딱히 믿을 수 있지 않더라구요



  • BellBoi
    172
    2022-01-13 11:38:01

    헛경력개발자

    DB에서 생성해서 넣는게 좋을까요?

    저는 프론트 컴포넌트에서 자동으로 만들어주는 값이 있으면 그걸 넣고 없으면

    JPA이용해서 createDate랑 modifiedDate 를 사용하는데

    JPA 어노테이션 이용하는 쪽이 더 괜찮은건가요(Spring boot)


  • 헛경력개발자
    865
    2022-01-13 11:59:34 작성 2022-01-13 11:59:46 수정됨

    특별한 사정이 있지 않는 한,

    무조건 db에서 생성해서 넣으시는게 개발편의면이나 신뢰성 면에서 여러모로 무조건 좋습니다.

  • BellBoi
    172
    2022-01-13 14:51:24
  • HJOW
    6k
    2022-01-13 14:55:43 작성 2022-01-13 14:57:02 수정됨

    잘 생각해보셔야 하는 게


    일단 프론트에서 넘기는건 절대 X이구요


    그러면

    서버(자바)에서 생성하는 방법이 있고

    DB에서 생성하는 방법이 있는데


    무조건 DB에서 생성한다고 능사는 아닙니다.

    이런 경우가 있을수도 있습니다.



    WAS서버와 DB서버 시간설정이 몇초 오차가 난다고 가정해봅시다.

    어떤 기능이 오전9시에 오픈하려고 해요. 9시 정각 0초 0밀리초

    그리고 그 시간이 지나고 나중에 데이터를 봤는데

    실제로는 9시 0초 100밀리초에 등록된 데이터가 있는데 DB상에는 9시 1초로 들어가 있을수도 있다는거죠.

    그러면 이 전후관계 파악에 오해가 발생합니다.

    이 오해의 원인은 오픈하는 로직이 서버(자바)로 구현되어 있기 때문이구요,



    결론은 무조건 서버(자바) 날짜로 넣으라는 게 아닙니다.

    코드보고 판단해야 한다는 겁니다...

  • 로그인을 하시면 답변을 등록할 수 있습니다.