[실전! 스프링 부트와 JPA 활용 2 - API 개발과 성능 최적화] API 개발 기본
·
Back-End/JPA
[작성일: 2023. 09. 28]  회원 등록 API@RestController@RequiredArgsConstructorpublic class MemberApiController { private final MemberService memberService; @PostMapping("/api/v1/members") public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member) { Long id = memberService.join(member); return new CreateMemberResponse(id); } @Data @AllArgsConstructor sta..
[실전! 스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발] 웹 계층 개발
·
Back-End/JPA
[작성일: 2023. 08. 28]  홈 화면과 레이아웃HomeController와 html(타임리프 사용, 코드 생략)을 작성해서 기본적인 홈 화면 레이아웃을 만들어주었다.@Slf4j@Controllerpublic class HomeController { @RequestMapping("/") public String home() { log.info("home controller"); return "home"; }}  참고: hierachical-style layouts예제에서는 뷰 템플릿을 간단하게 작성하기 위해 header, footer 같은 템플릿 파일을 반복해서 포함한다. 다음 링크의 Hierachical-style layouts을 참고하려면 이런 부분도 ..
[실전! 스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발] 주문 도메인 개발
·
Back-End/JPA
[작성일: 2023. 08. 26] 주문, 주문 상품 엔티티 개발주문 엔티티 개발@Entity@Getter@Setter@Table(name = "orders")@NoArgsConstructor(access = AccessLevel.PROTECTED)public class Order { // ...생략 // 생성 메서드 추가 public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems) { Order order = new Order(); order.setMember(member); order.setDelivery(delivery); for ..
[실전! 스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발] 상품 도메인 개발
·
Back-End/JPA
[작성일: 2023. 08. 25]  상품 엔티티 개발상품 엔티티 코드에서 비즈니스 로직을 추가한다.addStock() 메서드는 파라미터로 넘어온 수만큼 재고를 늘린다. 이 메서드는 재고가 증가하거나 상품 주문을 취소해서 재고를 다시 늘려야 할 때 사용한다.removeStock() 메서드는 파라미터로 넘어온 수만큼 재고를 줄인다. 만약 재고가 부족하면 예외가 발생하며 주로 상품을 주문할 때 사용한다. @Entity@Getter@Setter@Inheritance(strategy = InheritanceType.SINGLE_TABLE)@DiscriminatorColumn(name = "dtype")public abstract class Item { // 코드 생략 // 비즈니스 로직 추가 // s..
[실전! 스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발] 회원 도메인 개발
·
Back-End/JPA
[작성일: 2023. 08. 24]  회원 리포지토리 개발@Repository@RequiredArgsConstructorpublic class MemberRepository { private final EntityManager em; public void save(Member member) { // 회원 가입 em.persist(member); } public Member findOne(Long id) { // 회원 조회 return em.find(Member.class, id); } public List findAll() { // 모든 회원 조회 return em.createQuery("select m from Member m"..
[실전! 스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발] 애플리케이션 구현 준비
·
Back-End/JPA
[작성일: 2023. 08. 23]   구현 요구사항회원 기능회원을 등록할 수 있다.회원 조회를 할 수 있다.상품 기능상품을 등록할 수 있다.상품을 수정할 수 있다.상품 조회를 할 수 있다.주문 기능상품을 주문한다.주문 내역 조회를 볼 수 있다.주문 취소를 할 수 있다. 예제를 단순히 하기 위해 회원 기능, 상품 기능, 주문 기능만 구현한다. 로그인, 권한관리, 파라미터 검증, 예외처리, 카테고리, 배송 정보는 구현하지 않으며 상품은 도서만 사용한다.     애플리케이션 아키텍처  계층형 구조 사용controller, web : 웹 계층service : 비즈니스 로직, 트랜잭션 처리repository : JPA를 직접 사용하는 계층, 엔티티 매니저 사용domain : 엔티티가 모여 있는 계층, 모든 계..