사랑하애오
article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) Entity 연관 관계 매핑
JAVA/SpringBoot Shoppingmall 2022. 6. 27. 13:03

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..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 페이지 권한 설정
JAVA/SpringBoot Shoppingmall 2022. 6. 27. 12:58

페이지 권한 설정 1. 상품 등록 페이지 ADMIN (관리자) 계정만 접근할 수 있는 상품 등록 페이지 2. 상품 등록 페이지 접근 Controller 상품 등록 페이지에 접근하는 Controller 3. AuthenticationEntryPoint AuthenticationEntryPoint 인터페이스 구현 클래스 인증되지 않은 사용자가 리소스 요청 시 "Unauthorized" 에러를 발생시킴 4. SecurityConfig HttpServletRequset 에 대해서 security 처리를 수행 anyRequest() - 위에 존재하는 url patterns 들을 제외한 나머지 요청들 권한에 맞지 않는 사용자가 리소스에 접근할 때 수행되는 핸들러 static 디렉터리의 하위 파일은 인증을 무시하도록..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 로그인/로그아웃 기능 구현
JAVA/SpringBoot Shoppingmall 2022. 6. 27. 11:30

로그인 / 로그아웃 1. UserDetailsService 데이터베이스에서 회원 정보를 가져오는 인터페이스 loadUserByUsername() 메소드를 통해 회원정보를 조회 -> UserDetails 인터페이스 반환 2. UserDetails 회원 정보를 담는 인터페이스 직접 구현하거나 스프링 시큐리티에서 제공하는 User 클래스 사용 (구현체) 3. MemberService 로그인 / 로그아웃 구현 UserDetailsService 인터페이스를 구현하고 loadUserByUsername() 메소드 오버라이딩 Builder 패턴을 이용하여 UserDetail 인터페이스를 구현한 User 객체 생성 후 반환 @Override public UserDetails loadUserByUsername(String..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 회원가입 기능 구현
JAVA/SpringBoot Shoppingmall 2022. 6. 27. 11:02

회원가입 로직 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 객체를 생성하기 ..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) Sring Security
JAVA/SpringBoot Shoppingmall 2022. 6. 27. 10:35

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..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) Thymeleaf - 페이지 레이아웃
JAVA/SpringBoot Shoppingmall 2022. 6. 24. 16:36

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..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) Querydsl
JAVA/SpringBoot Shoppingmall 2022. 6. 24. 10:13

Querydsl 1. Querydsl SQL 쿼리문을 문자열이 아닌 소스코드로 작성하도록 지원하는 빌더 API (프레임워크) 2. Querydsl 의 장점 ① 고정된 SQL 문이아닌 조건에 맞게 동적으로 쿼리 생성 가능 ② 제약 조건 조립 및 가독성 향상 ③ 컴파일 시점에 오류를 발견할 수 있음 ④ 자동 완성 기능으로 인한 생산성 향상 3. Querydsl 의존성 주입 com.querydsl querydsl-jpa ${querydsl.version} com.querydsl querydsl-apt ${querydsl.version} 4. Qdomain 플러그인 추가 엔티티를 기반으로 접두사(prefix) 'Q'가 붙는 클래스를 자동으로 생성하는 플러그인 Querydsl 수행 시 엔티티가 아닌 Qdomain..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) @Query 어노테이션
JAVA/SpringBoot Shoppingmall 2022. 6. 22. 13:25

@Query 어노테이션 1. Spring Data JPA @Query 어노테이션 SQL과 유사한 JPQL (Java Persistence Query Language) 라는 객체지향 쿼리 언어를 통해 복잡한 쿼리 처리를 지원 JPQL - 테이블이 아닌 엔티티 객체를 대상으로 검색하는 객체지향 쿼리, SQL 추상화로 인해 특정 db sql 에 의존하지 않음 2. @Query 를 이용한 조회 상품 상세 설명(itemDetail)으로 상품을 조회하고 결과는 가격순으로 정렬 select "엔티티명" = select "*" @Param 을 통해 매개변수로 넘어온 값을 JPQL에 들어갈 변수로 지정 3. @Query 를 이용한 조회 테스트 수행 ItemDetail 컬럼 값에 "테스트 상품 상세 설명" 문자열이 포함되..