Spring JPA 공부/실전! 스프링 부트와 JPA 활용1

상품 등록 상품 등록 폼 @Getter @Setter public class BookForm { private Long id; private String name; private int price; private int stockQuantity; private String author; private String isbn; } 상품 등록 컨트롤러 @Controller @RequiredArgsConstructor public class ItemController { private final ItemService itemService; //상품등록 화면 띄우기 @GetMapping("/items/new") public String createForm(Model model){ model.addAttribute..
준영속 엔티티 영속 상태이면 그 엔티티의 값만 바꾸면 JPA가 커밋 시점에 값을 바꿔준다. 하지만 준영속 엔티티일 때는 문제가 생긴다. 준영속 엔티티는 영속성 콘텍스트가 더는 관리하지 않는 엔티티를 말한다. 우리 예제에서는 itemService.saveItem(book)에서 수정을 시도하는 Book객체다. 수정을 할 때는 DB에 한번 저장되어 있던 것을 다시 꺼내와 임의로 엔티티로 다시 만드는 것이다. 이렇게 DB에서 저장되었다가 다시 꺼내온 엔티티를 준영속 엔티티로 볼 수 있다.(임의로 만들어낸 엔티티도 기존 식별자를 가지고 있는 경우 = id를 가지고 있는경우) 준영속 엔티티를 수정하는 2가지 방법 변경 감지 기능 사용 //ItemService @Transactional public void upda..
홈 화면과 레이아웃 홈 화면은 회원 기능, 상품 기능, 주문 기능을 선택할 수 있게 해주는 곳이다. 홈 컨트롤러 @Controller @Slf4j public class HomeController { @RequestMapping("/") public String home(){ log.info("home controller"); return "home"; } } 홈 컨트롤러는 springBoot에서 늘 사용하던 컨트롤러이다. 제일 처음 home이기 때문에 RequestMapping이 /임을 알 수 있다. return은 home.html을 나타낸다. @Slf4j는 log를 사용할 수 있게 해준다. 강의에서 주는 html 파일을 templates 패키지에 추가하면 화면이 나온다. 예제에서는 뷰 템플릿을 최대한..
구현 기능은 상품 주문, 주문 내역 조회, 주문 취소가 있다. 구현 순서는 주문 엔티티, 주문상품 엔티티 개발 -> 주문 리포지토리 개발 -> 주문 서비스 개발 -> 주문 검색 기능 개발 -> 주문 기능 테스트 순이다. 주문, 주문상품 엔티티 개발 주문 생성 메서드 public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems){ Order order = new Order(); order.setMember(member); order.setDelivery(delivery); for (OrderItem orderitem : orderItems) { order.addOrderItem(orderitem); } or..
구현할 기능은 상품 목록, 상품 목록 조회, 상품 수정이다. 순서는 상품 엔티티를 개발 -> 상품 리포지토리를 개발 -> 상품 서비스 개발, 상품 기능 테스트 순이다. 상품 엔티티 개발(비즈니스 로직 추가) 비즈니스 로직은 그 관리하는 요소가 있는 엔티티에 개발하는 것이 가장 좋다. @Entity @Getter @Setter @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "dtype") public abstract class Item { @Id @GeneratedValue @Column(name = "item_id") private Long id; private String name; private int..
애플리케이션 아키텍처 SpringBoot에서 늘 사용하던 애플리케이션 아키텍처 구조이다. 계층형 구조를 사용한다. Controller, web : 웹 계층 service : 비즈니스 로직, 트랜잭션 처리 repository : JPA를 직접 사용하는 계층, 엔티티 매니저 사용 domain : 엔티티가 모여 있는 계층, 모든 계층에서 사용한다. 회원 도메인 개발 구현할 기능은 회원 등록하고 회원 목록을 조회하는 것이다. 순서는 회원 리포지토리를 개발 -> 회원 서비스를 개발 -> 회원 기능을 테스트하는 순이다. 회원 리포지토리 개발 @Repository //스프링 빈으로 등록 @RequiredArgsConstructor public class MemberRepository { private final En..
요구사항 분석 회원 기능 : 회원 등록, 회원 조회 상품 기능 : 상품 등록, 상품 수정, 상품 조회 주문 기능 : 상품 주문, 주문 내역 조회, 주문 취소 기타 요구 사항 : 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분 할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다. 도메인 모델과 테이블 설계 회원과 주문은 1대다 관계이다. 회원 한명당 여러개의 주문을 할 수 있기 때문이다. 주문과 배송은 1대1 관계이다. 주문하나당 배송지는 하나이다. 주문과 상품은 다대다 관계이다. 한번 주문 할 때, 주문하나당 여러개의 상품을 주문할 수 있고 또 상품도 여러개의 주문에 들어 갈 수있기 때문이다. 다대다 일경우 가운대에 주문상품이라는 테이블을 만들어 1대다..
프로젝트 생성 이번 활용편 강의는 JPA를 활용해 직접 WEB을 구현해보는 실습 수업이다. 강의 에서는 SpringBoot를 SpringBoot initialize에서 만들었지만 인텔리제이에서 SpringBoot를 한번에 만들어주므로 나는 인텔리제이에서 한번에 만들었다. 추가한 dependecies는 Spring Boot Web H2Database Spiring Boot JPA thymeleaf Lombok 이렇게 5개를 추가해주었다. Lombok은 저번에 SpringBoot를 공부할 때 사용을 해봤다. 손쉽게 코드를 짤 수 있게 도와주는 것이다. 대표적인 것은 Getter와 Setter가 있다. 라이브러리 살펴보기 현재 만든 프로젝트에 dependencies부분이다. 'org.springframewor..
Wooooong!!
'Spring JPA 공부/실전! 스프링 부트와 JPA 활용1' 카테고리의 글 목록