티스토리 뷰

JPA를 사용하여 개인 프로젝트 진행하던 중 게시판 글 수정 기능을 구현하는 과정에서
제목이나 내용을 수정하고 저장을 하면 등록일자 항목의 값이 비어지는 현상이 나타났다.

21번 게시물에 비어있는 등록일자


우선, 글을 처음 등록할 때 로직을 다시 확인하였다.
등록일자 값은 Entity 내에 @PrePersist 어노테이션을 이용하여 Date 객체를 대입하여 값을 등록하였다.
@PrePersist 어노테이션은 해당 테이블이 insert를 할 때 동작하는 것으로 수정을 할 때는 해당 어노테이션이 동작하지 않기 때문이다.



수정 기능은 입력받은 값을 Entity에 저장하고 JPA save() 메소드를 호출하는 방식이다.


해당 로직에서 동작하는 쿼리를 확인하기 위해 로그를 확인해 보았는데
수정화면에서는 제목과 내용의 값만 존재하는데 로그상에 찍힌 update문에는 등록일자 컬럼값까지 update 대상에 포함이 되어있었다.


원인은
수정 기능이지만 객체에 값을 받아와 해당 데이터에 다시 저장을 하는 방식인데
기존 RDB 사용 방식에 익숙해져 있는 탓에 이부분을 고려하지 못했다.
따라서 수정화면에서 입력한 값만 호출한 메소드의 Entity에 셋팅이 되고 update가 진행이 되는 것이었다.

조치방법으로는
업데이트를 진행하기 전에 수정하는 게시물의 일련번호를 이용해서 조회한 결과를
동일한 형태의 임시 Entity에 할당하여 기존 값을 유지해야하는 변수에 대입한 후 JPA save() 메소드를 호출하도록 변경하였다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함