우주먼지
article thumbnail
엔티티 개발

💡 엔티티 개발 엔티티 클래스를 작성할 때, Getter는 열어두고 Setter는 필요한 경우에만 사용한다. 변경 지점이 명확하도록 변경을 위한 비즈니스 메서드를 별도로 제공한다. 기본적으로 단방향 매핑으로 진행하되, Category Item은 학습을 위해 ManyToMany로 진행하며 실무에서 ManyToMany는 절대 사용하지 말자. 기본적으로 Global Fetch 전략은 Lazy로 설정하되 필요에 따라 Eager로 설정한다. 추후 createdAt, modifiedAt 같은 엔티티 공통 컬럼에 대한 Auditor를 만들 예정 임베디드 값 타입인 Address에 대한 설명을 하자면, 값 타입은 기본적으로 Immutable 해야 하기 때문에 Setter 대신 생성자를 통해서 원본 값 변경이..

article thumbnail
도메인 분석 설계

💡 요구사항 분석 강의에서는 기본적으로 엔티티들이 양방향 연관관계를 갖지만, 개인적으로 전부 단방향 연관관계로 진행한다. Global Fetch 전략은 Lazy, OSIV옵션은 False로 설정하고 진행한다. 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다. 💡 도메인 모델과 테이블 설계 회원 & 주문 & 상품의 관계 회원은 여러 상품을 주문할 수 있다. 한 번 주문할 때 여러 상품을 선택할 수 있다 즉 주문 - 상품의 연관관계는 N:M 이므로 조인 테이블을 두어 1:..

프로젝트 초기 설정

💡 프로젝트 생성 https://start.spring.io/ Gradle 프로젝트 Spring Boot 버전은 3.0.0 이상으로 설정한다. (개인적으로 3.0이상 버전을 경험을 위함) JDK 17 라이브러리 : Web, Lombok, Thymeleaf, JPA, H2 Database SSR (Server Side Rendering) 방식을 Default로 한다. thymeleaf 공식 사이트: https://www.thymeleaf.org/ 스프링 공식 튜토리얼: https://spring.io/guides/gs/serving-web-content/ 스프링부트 메뉴얼: https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-..

검색 태그