• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

Book 정적 생성 메서드 사용 시, 수정 X

24.01.19 20:07 작성 조회수 102

1

Book 객체 인스턴스를 생성할 때, Setter로 값을 세팅하는 것이 아니라, 이전에 배운 '정적 생성 메서스' 방식을 활용해보았습니다. 그런데, 이 방식으로 진행할 경우에는 수정 시, item.getId() ==null 이 ture가 되어 em.persist를 해버립니다.(즉, 수정을 위한 merge가 동작하지 않습니다.)
[Book.class]
 [ItemController.class] ※이후의 Repository 관련한 코드는 모두 강의 내용과 동일합니다!!

그래서 ItemRepository의 if 구문에 break point를 찍고 디버깅을 해보았는데,
상품 등록 시, Item의 Id값이 세팅이 안되었더라고요.

DB 테이블을 확인해보니 Item_id 값은 잘 들어가 있는데, 왜 아래와 같이 수정 시에도 id = null 인지 짧은 지식으로 이해가 안갑니다..!
 

답변 1

답변을 작성해보세요.

1

OMG님의 프로필

OMG

2024.01.19

안녕하세요. 임주혁님, 공식 서포터즈 OMG입니다.

강의 코드를 보시면 아시겠지만 book객체를 생성하더라도 기본적으로 이미 영속화된 객체의 id를 바탕으로 update가 진행되는데,

image올리신 createBook을 보면 id를 추가하는 코드가 없어서 null인 것 같아요.

이럴 경우 올리신 상황처럼 비영속 객체를 영속객체로 저장하는 프로세스가 진행되는게 맞는 것 같습니다.

지금 올리신 코드는 함수 이름만 update일뿐 실질적인 동작은 저장과 별 다를게 없어보이거든요.

 

혹 제가 잘못 이해한 부분이 있다면 부연설명 부탁드려요 😀

감사합니다.

임주혁님의 프로필

임주혁

질문자

2024.01.22

온전히 제 시야가 흐렸던 탓이었네요... ㅠㅠ 가끔 이렇게 간단한 문제가 안보이는 때가 있었는데, 바쁘실텐데 친절한 답변 달아주셔서 진심으로 감사합니다! 다음에는 조금 더 신중하게 확인해보고 질문해야겠다는 반성하게 되네요...!