ProjectGradle 빌드 툴DependenciesSpring WebThymeleafLombokSpring Data JPA: 지금Spring Data JPA는 안쓰지만 여기에 JPA 설정들이 있어서 선택H2 DataBasespring-boot-starter-webs
요구사항 분석도메인 모델 설계테이블 설계기능에 필요한각 엔티티를 간략화된 그림으로 나타냄기능 목록회원 기능회원 등록회원 조회상품 기능상품 등록상품 수정상품 조회주문 기능상품 주문주문 내역 조회주문 취소기타 요구사항상품은 재고관리가 필요상품의 종류는 도서 / 음반 / 영
핵심 기능은 3가지회원(Member) 관련상품(Item) 관련주문(Order) 관련가장 일반적으로 많이 사용하는 계층형 구조Controller : 웹 계층Service : 비즈니스 로직, 트랜잭션 처리Repository : JPA로 DB에 직접 접근하는 계층Domain
동적 쿼리?: 같은 기능을 하지만 동적으로 들어오는 파라미터에 의해 조건이 바뀌게 설계되는 쿼리ex) 검색 기능 구현시 값이 없으면 전체 정보, 있으면 맞는 정보를 반환방법순수 JPQLCriteriaQueryDSL살펴 볼 예시: Member.name 과 Order.s
html의 form으로 넘어오는 값들을 받는 역할을 하는 객체Entity 직접 사용Form으로 넘어오는 값이 Entity와 일치하지 않거나 값 검증을 해야하면 Entity 내부에 처리 로직이 늘어난다\--> Entity가 화면에 종속적으로 변함\--> 유지보수 힘듬Fo
영속성 컨텍스트가 관리하지 않는 엔티티임의로 만든 엔티티: 수정된 값을 저장하기 위해 식별자는 있지만 관리되지 않는 엔티티영속화가 취소된 엔티티: 강제로 영속화를 취소한 엔티티준영속 엔티티는 수정이 일어나도 변경 감지(Dirty Checking)이 일어나지 않음변경감지
: 템플릿 엔진을 통해 뷰를 내려주는 것이 아닌 REST API로 데이터만 내려주는 것최근 React, Vue등 클라이언트에서 렌더링을 통한 방식을 대부분 사용API를 개발하는 방식의 서버 개발을 실무로 하는 경우가 더 많음컨트롤러 구조 나누기템플릿 엔진을 사용한 개발
Intro > 가 이 에 있는 를 만드는 과정 에는 주문한 와 객체가 되어 있음 : : * : + * * : + + * V1 (Entity 반환) > (API 로직) 문제점 의 : 기본적으로 을 가지고 있어서 에 있는 와 는
컬렉션 조회 최적화 ?일대다(OneToMany)관계에 있으면 필드로 컬렉션(Collection)을 가지게 되고 이러한 상황에서의 조회를 단계적으로 최적화를 다루는 것일대일(OneToOne), 다대일(ManyToOne) 연관관계에서 데이터 조회와 최적화는 앞 글에서 다룸
Open Session In View의 약자DB커넥션에 대한 세션을 View까지 유지하는 것에 대한 전략기본값은 true부르는 명칭이 조금씩 다르지만, 관례상 OSIV라고 부름Hibernate : OSIV(Open Session In View)JPA : OEIV(Ope