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

꾸준히하면언젠간님의 프로필 이미지

작성한 질문수

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

변경 감지와 병합(merge)

해당 예제에서 Book 의 모든 필드를 바꾸고자 할 때

해결된 질문

22.06.16 19:26 작성

·

305

5

안녕하세요
해당 수업에서 만약 Book 의 모든 필드를 변경하고자 한다면 실제 실무에서는 어떻게 사용하면 좋을까 하면서 만들어 보았는데,
틀린 부분이나 고쳐야할 부분이 있다면 말씀해주실 수 있을까요 ?
작은 부분이라도 조언 해주시면 감사하겠습니다!
 
1. DTO
@Getter @Setter
public class UpdateBookDto {

private String name;
private int price;
private int stockQuantity;
private String author;
private String isbn;

public static UpdateBookDto updateBookAll(
String name, int price, int stockQuantity,
String author, String isbn) {
UpdateBookDto bookDto = new UpdateBookDto();
bookDto.name = name;
bookDto.price = price;
bookDto.stockQuantity = stockQuantity;
bookDto.author = author;
bookDto.isbn = isbn;
return bookDto;
}
}
 
2. Controller
public class ItemController {
@PostMapping("/{itemId}/edit")
public String updateItem(@PathVariable String itemId,
@ModelAttribute("form") BookForm form) {
UpdateBookDto bookDto = UpdateBookDto.updateBookAll(
form.getName(),
form.getPrice(),
form.getStockQuantity(),
form.getAuthor(),
form.getIsbn()
);

itemService.updateItem(form.getId(), bookDto);
return "redirect:/items";
}
}
 
3. Service
public class ItemService {
@Transactional
public void updateItem(Long itemId, UpdateBookDto dto) {
Book findBook = (Book) itemRepository.findOne(itemId);
findBook.changeBook(
dto.getName(),
dto.getPrice(),
dto.getStockQuantity(),
dto.getAuthor(),
dto.getIsbn()
);
}
}
 
4. Book
public class Book extends Item {
public void changeBook(String name, int price,
int stockQuantity, String author, String isbn) {
super.changeItem(name, price, stockQuantity);
this.author = author;
this.isbn = isbn;
}
}
 
 

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

2022. 06. 20. 18:31

안녕하세요. 김우진님

생각하신 내용처럼 진행하시면 됩니다.

감사합니다.

꾸준히하면언젠간님의 프로필 이미지

2022. 06. 21. 19:26

안녕하세요 답변 감사합니다!