자바빵
521
2021-03-23 16:30:40
2
155

회원정보 수정시에 하나만 바뀌어도 전부 update를 해야할까요??


{

    회원정보vo : {

        정보1:"정보",

        정보2:"정보",

        정보3:"정보",

        정보4:"정보",

        정보5:"정보",

        추가정보1vo : {

            정보1:"정보",

            정보2:"정보",

            정보3:"정보"

        } ,

        추가정보2vo : {

            정보1:"정보",

            정보2:"정보",

            정보3:"정보"

        }

    }

}


대충 이런 느낌의 vo를 가지는 회원정보가 있을때,

회원정보vo안의 정보1~5 중에 하나만 바뀌어도

회원정보vo안에 있는 정보1~5 뿐만 아니라 추가정보1vo추가정보2vo까지 모두 업데이트를 시켜야 하는데, 이게 좀 낭비라 생각됩니다.


1. newVO와 기존VO를 비교해서 바뀐것만 수정하는 방법이 나을지.


2.[회원정보vo의 정보1~5], [추가정보1vo], [추가정보2vo] 세 분류로 나눠서 각 분류에 하나라도 변경이 있으면 해당 분류를 전부 업데이트 하는 방식이 나을지.


3.어차피 회원정보 업데이트는 엄청 빈번한게 아니니 그냥 전부 업데이트가 나을지.


4. 아니면 다른 방법이 있을지.


어떤 방식을 주로 쓰는지 궁금합니다.


게시물 같은 경우는 별 생각 없이 모든 데이터를 update해왔는데,

회원정보는 들어가는 정보도 많고 일부만 수정하는 부분이 많으니 어느 방법이 효율적일지 잘 모르겠습니다 ㅠ

0
  • 답변 2

  • Dierslair
    5k
    2021-03-23 16:44:19 작성 2021-03-23 16:45:26 수정됨

    ~batis류는 파라미터(Map)에 파라미터가 있고, 빈 값이 아니면 update문에 포함하는 식으로 하구요,

    <update id="..">
      update tb_person
      set
        <if test='name != null and name != ""'>
          name = #{name}
        </if>
      ...
    </update>

    JPA는 @DynamicUpdate를 사용하면 자동으로 변경된 칼럼만 쿼리가 나갑니다.

    JPA는 PersistenceContext를 사용하면 어차피 한번은 조회를 해야 하니 변경된 값 감지가 가능하지만, ~batis에서는 비교하기 위해 한번 select해야 하는 수고로움이 있으니, 값이 있으면 update 쿼리를 만드는 게 편의상 나을 것 같습니다.

  • 자바빵
    521
    2021-03-23 17:20:52

    @ John Suhr

    오 DynamicUpdate라는 걸 찾아보니, 지금 사용중인 hibernate에서 지원하는군요!

    이용해봐야겠습니다! 감사합니다!!!

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