JPA/JPA 활용
-
회원 등록 APIJPA/JPA 활용 2023. 7. 11. 18:14
HTML의 웹 페이지가 아닌 API에서의 JSON 형태로 데이터를 전달할 때의 컨트롤러를 설계한다. API 설계의 잘못된 예 @RestController // api 설계할 때에는 RestController 사용 @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; @PostMapping("api/v1/members") public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member) { Long id = memberService.join(member); return new CreateMemberRespon..
-
웹 계층 개발 - 상품 주문과 주문 내역JPA/JPA 활용 2023. 7. 11. 18:13
OrderController @Controller @RequiredArgsConstructor public class OrderController{ private final OrderService orderService; private final MemberService memberService; private final ItemService itemService; @GetMapping("/order") public String createForm(Model model) { List members = memberService.findMembers(); List items = itemService.findItems(); model.addAttribute("members", members); model.ad..
-
변경 감지와 병합(merge)JPA/JPA 활용 2023. 7. 11. 18:13
준영속 엔티티 @PostMapping("items/{itemId}/edit") public String updateItem(@PathVariable Long itemId, @ModelAttribute("form") BookForm form) { Book book = new Book(); book.setId(form.getId()); book.setName(form.getName()); book.setPrice(form.getPrice()); book.setStockQuantity(form.getStockQuantity()); book.setAuthor(form.getAuthor()); book.setIsbn(form.getIsbn()); itemService.saveItem(book); return "r..
-
웹 계층 개발 - 상품 수정JPA/JPA 활용 2023. 7. 11. 18:12
상품을 등록하고 나중에 수정할 일이 있을 때 상품을 수정하는 기능이다. @GetMapping("items/{itemId}/edit") public String updateItemForm(@PathVariable("itemId") Long itemId, Model model) { Book item = (Book) itemService.findOne(itemId); // 상품은 책만 있다고 가정 BookForm form = new BookForm(); form.setId(item.getId()); form.setName(item.getName()); form.setPrice(item.getPrice()); form.setStockQuantity(item.getStockQuantity()); form.setA..
-
웹 계층 개발 - 상품 등록, 목록 조회JPA/JPA 활용 2023. 7. 11. 18:12
상품을 등록하고 조회할 수 있는 기능을 만들어 볼 것이다. (예제 단순화를 위해 상품은 책 하나) BookForm @Getter @Setter public class BookForm { private Long id; private String name; private int price; private int stockQuantity; private String author; private String isbn; } Item의 정보들을 닮을 수 있는 form인 BookForm이다. 상품 등록 ItemController @Controller @RequiredArgsConstructor public class ItemController { private final ItemService itemService; ..
-
웹 계층 개발 - 회원 등록, 목록 조회JPA/JPA 활용 2023. 7. 11. 18:11
위의 사진은 강의를 들으면서 개발할 기능들이다. 회원가입을 하고 상품 등록을 하고 주문을 할 수 있는 웹 애플리케이션을 만들 것이다. 이번 포스팅에서는 회원가입을 할 수 있는 회원가입 폼을 만들 것이다. html과 css 코드가 있긴 한데 스프링과 스프링부트, JPA를 공부하는 과정이기 때문에 프론트엔드 개발쪽은 직접 코드를 작성하지 않고 복사, 붙여넣기를 사용했다. MemberController @Controller @RequiredArgsConstructor public class MemberController { private final MemberService memberService; @GetMapping("/members/new") public String createForm(Model mod..
-
주문 기능 테스트JPA/JPA 활용 2023. 7. 11. 18:11
주문 기능을 테스트할 때 여러 테스트에서 공통으로 사용될 Item, Member 엔티티 생성을 공통으로 묶어서 private으로 선언했다. private Item createBook(String name, int price, int stockQuantity) { Item book = new Book(); book.setName(name); book.setPrice(price); book.setStockQuantity(stockQuantity); em.persist(book); return book; } private Member creatMember() { Member member = new Member(); member.setName("회원1"); member.setAddress(new Address(..
-
주문 리포지토리, 서비스 개발JPA/JPA 활용 2023. 7. 11. 18:11
주문 도메인을 이용해서 repository와 service를 개발할 것이다. OrderRepository class @Repository @RequiredArgsConstructor public class OrderRepository { private final EntityManager em; public void save(Order order) { em.persist(order); } public Order findOne(Long id) { return em.find(Order.class, id); } // public List findAll(OrderSearch orderSearch) {} // 검색 기능은 나중에 작성 } repository는 save와 findOne을 해주는 것 말고 특별한 기능을..