강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

나 좀 도와줘요님의 프로필 이미지
나 좀 도와줘요

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

상품 등록

ItemController의 create() 메서드에서 id값을 안받는 이유는 무엇인가요??

작성

·

285

0

GenerateValue가 id 값을 자동으로 생성해주기 때문에 안받아도 상관이 없는 거라고 생각했는데 아이디값을 setter로 받아서 코드를 작성해도 등록과 조회가 잘됩니다 ㅠㅠ

Form 객체에 id필드를 추가하고 id를  받아서 구현해도 상관없을까요? 아니면 id값은 생략하는 게 맞는건가요?

===============================================
<추가>

id를 찍어보니까 null이 찍히는 걸 확인했습니다.

JPA가 persist()를 할 때 id를 생성하고 그 id를 사용해서 영속성 컨텍스트에 데이터를 저장하기 때문에 그 전에는 id존재하지 않기 때문에 굳이 받을 필요가 없는게  맞는지 궁금합니다..!

<ItemController.java>

Book book = new Book();
book.setName(form.getName());
book.setPrice(form.getPrice());
book.setStockQuantity(form.getStockQuantity());
book.setAuthor(form.getAuthor());
book.setIsbn(form.getIsbn());

<MemberController.java>

Member member = new Member();
member.setName(form.getName());
member.setAddress(address);

답변 1

0

안녕하세요. 에러나면짖는개님, 공식 서포터즈 David입니다.

.
네, 이해하신게 맞습니다.

학습하신대로 persist 이후 id가 생성되어 엔티티가 id를 가지게 됩니다.

따라서 아이템을 저장하기 전 아이템을 생성하는 과정에서 id를 전달할 필요가 없는 것입니다.
.
감사합니다.

나 좀 도와줘요님의 프로필 이미지
나 좀 도와줘요

작성한 질문수

질문하기