우주먼지
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-..

article thumbnail
4 - Logging
Inflearn 강의/Spring MVC 2022. 11. 13. 21:18

💡 Logging private Logger log = LoggerFactory.getLogger(getClass()) -> @Slf4j 매핑 정보 @Controller는 반환값이 String 이면 View Name 으로 인식 @RestController는 반환값이 HTTP Message Body에 바로 입력 로그 레벨 설정 (application.properties) logging.level.root 전체 로그 레벨 설정 (default = info) logging.level.{directory} 선택한 패키지와 그 하위 로그 레벨 설정 로그의 출력 의미 없는 연산이 일어나 리소스를 낭비하지 않도록 연산자 사용 X 파라미터로 넘겨줌으로써 의미없는 연산 발생 X 로그 사용 시 장점 Thread, Clas..

article thumbnail
3 - Spring MVC 구조
Inflearn 강의/Spring MVC 2022. 11. 10. 00:06

💡 Spring MVC 구조 동작순서 Handler 조회 - Handler Mapping을 통해 Request URL에 Mapping된 Handler(Controller) 조회 Handler Adapter 조회 - Handler를 실행할 수 있는 HandlerAdapter 조회 Handler Adapter 실행 Handler 실행 - 실제 Handler(Controller) 실행 ModelAndView 반환 - Adapter는 Handler가 반환하는 정보를 ModelAndView로 변환해서 반환 viewResolver 호출 - viewResolver를 조회 후 실행 (내부에 뷰 포워딩 로직이 존재함) View Rendering [주요 인터페이스] 핸들러 매핑: org.springframework.web..

2 - SSR & CSR
Inflearn 강의/Spring MVC 2022. 11. 2. 04:13

💡 SSR & CSR SSR 서버에서 동적으로 HTML을 생성해서 클라이언트에 전달 화면이 정적이고, 복잡하지 않을때 사용 CSR HTML 결과를 JS를 사용해 웹 브라우저에 동적으로 생성&적용 복잡하고 동적인 UI 사용 동작 과정 HTML 요청 -> JS링크 응답 JS 요청 -> 클라이언트 로직, HTML 렌더링 코드 응답 HTTP API - 데이터 요청 -> JSON 데이터 응답 JS로 HTML 결과 렌더링 Spring Web Flux 기술적 난이도 매우 높음 함수형 스타일 개발 비동기 None Blocking 처리 최소 스레드 - 최대 성능 컨텍스트 스위칭 비용 효율화 서블릿 사용 X RDB 지원 미흡

1 - Servlet & Multi Thread
Inflearn 강의/Spring MVC 2022. 11. 2. 03:45

💡 Servlet 어플리케이션 로직 자동화 @WebServlet(name="name", urlPatterns="/path"), urlPatterns의 URL이 호출되면 서블릿 코드 실행 HttpServlet, HttpServletRequest, HttpServletResponse 클래스 사용 WAS가 요청,응답 객체를 새로 만들어서 서블릿 객체를 호출 서블릿 컨테이너 서블릿 객체의 생성,초기화,호출,종료 등 LifeCycle 관리 싱글톤 최초 로딩시 미리 서블릿 객체를 만들어두고 재활용 멀티스레드 지원 static 변수 사용 주의 💡 멀티 스레드 장점 동시 요청 처리 리소스 허용범위까지 처리 어떤 스레드가 지연되어도 나머지 스레드는 정상동작 단점 스레드 생성값이 비싸다 컨텍스트 스위칭 비용 발생 생성에 ..

검색 태그