상품 등록 페이지 1. 상품 이미지 Entity Item (상품) Entity 와 다대일 단방향 관계를 갖는 ItemImg Entity 생성 2. modelmapper 라이브러리 추가 상품 등록 화면으로부터 전달받은 DTO 객체를 Entity 로 변환해야함 상품 조회 결과를 화면에 반환할 때 Entity 를 DTO 객체로 변환해야함 modelmapper 라이브러리를 통해서 서로 다른 클래스의 값을 필드의 이름과 자료형이 같으면 getter, setter 를 통해 값을 복사해서 객체를 반환 org.modelmapper modelmapper 2.3.9 3. 상품 관련 DTO 객체 생성 상품을 등록 및 조회할 때 지정된 필드뿐 아니라 추가적인 데이터들의 이동이 많으므로 여러 DTO 이용 상품 이미지에 대한 D..
Auditing 1. Auditing 엔티티에 공통으로 들어가는 멤버변수들 (등록시간, 수정시간, 등록자, 수정자 등등)을 추상클래스로 만들고, 해당 추상 클래스를 상속받아 엔티티에 공통적인 기능을 수행하도록 하며 엔티티의 생성과 수정을 감시하는 기법 2. Auditing 필요성 여러 엔티티에 공통된 멤버변수가 존재할 때 하나의 추상클래스로 통합하여 구현할 수 있음 등록시간, 수정시간, 등록자, 수정자 등등의 엔티티 상태 변경에 대한 정보를 기록할 수 있음 기록을 바탕으로 버그 문의, 업데이트 변경 대상 조회 등등 여러 상황에서 사용됨 3. AuditorAware 로그인한 사용자를 등록자 및 수정자로 지정하기 위해 AuditorAware 인터페이스를 구현 현재 로그인한 사용자의 정보를 추출 Authent..
영속성 전이 (CASCADE) 1. 영속성 전이 (CASCADE) " cascade : 폭포, 폭포처럼 흐르다 " 라는 사전적 의미를 바탕으로 엔티티의 상태를 변경할 때 해당 엔티티와 연관된 엔티티의 상태 변화를 전파시키는 옵션 부모는 One 에 해당하는 Entity 자식은 Many 에 해당하는 Entity 부모 Entity 가 존재해야 자식 Entity 가 부모를 참조하며 생성될 수 있음 2. CASCADE 종류 CASCADE설명 PERSIST 부모가 영속화될 때 자식도 영속화 MERGE 부모가 병합될 때 자식도 병합 REMOVE 부모가 삭제될 때 자식도 삭제 REFRESH 부모가 refresh 되면 자식도 refresh DETACH 부모가 detach 되면 자식도 detach ALL 부모의 상태 변화..
Entity 연관 관계 매핑 1. 연관 관계 매핑 종류 ① 일대일(1:1) - @OneToOne ② 다대일(N:1) - @ManyToOne ③ 일대다(1:N) - @OneToMany ④ 다대다(N:M) - @ManyToMany 2. 연관 관계 매핑 방향 데이터베이스 중심 설계 테이블에서 관계는 항상 양방향 JPA 객체지향 중심 설계에서는 단방향, 양방향 존재 일대일 단방향 1. 일대일 단방향 매핑 cart ⟶ member Cart (장바구니) Entity 생성 cart 테이블 생성 cart 테이블 생성 후 alter 명령어로 외래키(FK) 지정 2. CartRepository 장바구니 조회를 위한 Repository 3. 장바구니 조회 테스트 (즉시로딩) 장바구니 조회 테스트 클래스 생성 및 DI car..
페이지 권한 설정 1. 상품 등록 페이지 ADMIN (관리자) 계정만 접근할 수 있는 상품 등록 페이지 2. 상품 등록 페이지 접근 Controller 상품 등록 페이지에 접근하는 Controller 3. AuthenticationEntryPoint AuthenticationEntryPoint 인터페이스 구현 클래스 인증되지 않은 사용자가 리소스 요청 시 "Unauthorized" 에러를 발생시킴 4. SecurityConfig HttpServletRequset 에 대해서 security 처리를 수행 anyRequest() - 위에 존재하는 url patterns 들을 제외한 나머지 요청들 권한에 맞지 않는 사용자가 리소스에 접근할 때 수행되는 핸들러 static 디렉터리의 하위 파일은 인증을 무시하도록..
회원가입 로직 1. 회원 역할(Role) 구분 com.shop.constant.Role.java, enum 클래스 생성 일반 유저 / 관리자 package com.shop.constant; public enum Role { USER, ADMIN } 2. 회원 가입 정보 DTO 회원 가입 화면으로 부터 넘어오는 가입정보를 담을 DTO 객체 @Getter @Setter public class MemberFormDto { private String name; private String emial; private String password; private String address; } 3. Member Entity 회원 정보를 저장하는 Member Entity(Model) 생성 Member 객체를 생성하기 ..
Spring Security 1. Spring Security Spring 기반 애플리케이션의 보안(인증과 인가 등)을 담당하는 스프링 하위 프레임워크 2. Spring Security 구조 Spring Security 기능은 request 가 DispatcherServlet 에 도달하기 전에 수행되야함 Servlet Container 에서는 Spring Container Bean 객체 사용 불가 따라서 DelegatingFilterProxy 가 SpringSecurityFilterChain 을 찾아 보안 처리 위임 FilterChainProxy 를 SpringSecurityFilterChain 이라는 이름으로 구현 FilterChains 에는 여러 filter 존재 WebSecurityConfigure..
Layout Dialect 1. Thymeleaf Layout Dialect 의존성 주입 nz.net.ultraq.thymeleaf thymeleaf-layout-dialect 2.5.1 2. header / footer / layout 생성 resources/templates/fragments/header.html, header.html resources/templates/layouts/layout1.html 3. header / footer 코드 다른 페이지 (layout)에 포함시킬 영역을 th:fragment 로 선언 header footer 4. layout 코드 layout 기능을 사용하기 위해서 layout 네임스페이스 추가 script, css 를 추가할 영역을 layout:fragment..