3. 도메인 설계
·
SpringBoot 코딩/JPA와 SpringBoot코딩
엔티티 설계시 주의점 모든 연관관계는 지연로딩으로 설정! - 즉시로딩 : 어떤 SQL이 실행될지 추적하기 어렵다. 특히 JPQL을 실행할 때 N+1 문제가 자주 발생한다. 실무에서 모든 연관관계는 모두 lazy로 설정 @XToOne(OneToOne, ManyToOne)은 기본 fetch값이 EAGER이기 때문에 모두 LAZY로 바꿔줘야한다 (fethch = FETCHTYPE.LAZY) package jpabook.jpashop.domain; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util...
2. 테이블 설계
·
SpringBoot 코딩/JPA와 SpringBoot코딩
기능 목록 회원 기능 - 회원 등록 - 회원 조회 상품 기능 - 상품 등록 - 상품 수정 - 상품 조회 주문 기능 - 상품 주문 - 주문 내역 조회 - 주문 취소 기타 요구사항 - 상품은 재고 관리가 필요하다. - 상품의 종류는 도서, 음반, 영화가 있다. - 상품을 카테고리로 구분할 수 있다. - 상품 주문시 배송 정보를 입력할 수 있다 다대다 관계가 JPA에서는 성립되지 않기 때문에 join테이블을 생성하여 이어질 수 있도록 한다 Foreign Key가 연관관계의 주인이 되는 것이다. 반대편에 있는 것은 단순 조회에 사용된다. 연관관계 매핑 분석 회원과 주문 일대다, 다대일의 양방향 관계 연관관계의 주인은 외래키가 있는 ORDERS을 주인으로 정한다 따라서 Order.member를 ORDERS.MEM..
1. JPAShop 기본설정(JpaShop)
·
SpringBoot 코딩/JPA와 SpringBoot코딩
Yml을 통한 기본 설정 spring: datasource: url: jdbc:h2:tcp://localhost/~/test;MVCC=TRUE username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: show_sql: true format_sql: true logging: level: org.hibernate.SQL: debug bulid.gradle plugins { id 'org.springframework.boot' version '2.6.7' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id..
12. Naver, Google을 이용하여 oauth인증하기
·
SpringBoot 코딩
https://developers.naver.com/apps 애플리케이션 - NAVER Developers developers.naver.com 해당 사이트에 들어가 원하는 api를 선택한다. 지금은 테스트이기 떄문에 회원이름과 이메일의 정보를 받아오도록 하겠다. 주소를 입력하고 받아올 정보를 넘길곳을 지정해준다. GOOGLE https://console.developers.google.com/ 새 프로젝트 만들기를 선택 후 이름을 넣어준다. 위에 있는 링크를 다시한번 들어가게 되면 왼쪽에 아래의 사진과 같은 메뉴를 볼 수 있다. 인증정보 메뉴를 선택 후 사용자 인증정보 만들기를 누른다. 그 후 OAuth 클라이언트 ID 만들기를 누르고 동의화면만들기를 누른다. 외부 선택 후 만들기 다시 사용자 인증정보..
11. Thymeleaf의 sec nameSpace가 없을 때 사용하는 방법 (SpringBootSecurity Demo)
·
SpringBoot 코딩
@AuthenticationPrincipal과 org.springframework.security.core.userdetails.User를 사용하여template page에 user 정보 출력하기 pom.xml수정 thymeleaf-extra를 사용하는 것은 편하긴하지만 오래됐기때문에 새로운 방식으로 재정의해준다. thymeleaf-extra dependency를 제거하고html에서 타임리프Security적용한 것을 전부 제거해준다. MemberService.java 수정 @Service @Slf4j public class MemberService implements UserDetailsService { @Autowired private MemberDao memberDao; @Override public..
10. DB와 연동한 Security, Password Encording (SpringSecurity)
·
SpringBoot 코딩
Table생성 CREATE TABLE Member ( userid VARCHAR(20) PRIMARY KEY, passwd VARCHAR(100) NOT NULL, name VARCHAR(20) NOT NULL, role VARCHAR(45) NOT NULL, enabled TINYINT DEFAULT 1 ); username이 아닌 name이라고 지정한 이유는 Security에서 username은 아이디로 인식하기 때문이다. test 데이터 삽입 INSERT INTO Member VALUES('member', '12345678', '회원', 'ROLE_MEMBER', 1); INSERT INTO Member VALUES('manager', '12345678', '매니저', 'ROLE_MANAGER', ..
BE전문가 프로젝트
'SpringBoot 코딩' 카테고리의 글 목록