목록SpringBoot 코딩 (15)
BE전문가 프로젝트
엔티티 설계시 주의점 모든 연관관계는 지연로딩으로 설정! - 즉시로딩 : 어떤 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...
기능 목록 회원 기능 - 회원 등록 - 회원 조회 상품 기능 - 상품 등록 - 상품 수정 - 상품 조회 주문 기능 - 상품 주문 - 주문 내역 조회 - 주문 취소 기타 요구사항 - 상품은 재고 관리가 필요하다. - 상품의 종류는 도서, 음반, 영화가 있다. - 상품을 카테고리로 구분할 수 있다. - 상품 주문시 배송 정보를 입력할 수 있다 다대다 관계가 JPA에서는 성립되지 않기 때문에 join테이블을 생성하여 이어질 수 있도록 한다 Foreign Key가 연관관계의 주인이 되는 것이다. 반대편에 있는 것은 단순 조회에 사용된다. 연관관계 매핑 분석 회원과 주문 일대다, 다대일의 양방향 관계 연관관계의 주인은 외래키가 있는 ORDERS을 주인으로 정한다 따라서 Order.member를 ORDERS.MEM..
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..
https://developers.naver.com/apps 애플리케이션 - NAVER Developers developers.naver.com 해당 사이트에 들어가 원하는 api를 선택한다. 지금은 테스트이기 떄문에 회원이름과 이메일의 정보를 받아오도록 하겠다. 주소를 입력하고 받아올 정보를 넘길곳을 지정해준다. GOOGLE https://console.developers.google.com/ 새 프로젝트 만들기를 선택 후 이름을 넣어준다. 위에 있는 링크를 다시한번 들어가게 되면 왼쪽에 아래의 사진과 같은 메뉴를 볼 수 있다. 인증정보 메뉴를 선택 후 사용자 인증정보 만들기를 누른다. 그 후 OAuth 클라이언트 ID 만들기를 누르고 동의화면만들기를 누른다. 외부 선택 후 만들기 다시 사용자 인증정보..
@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..
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', ..
Spring SeCurity 1. 인증 : 사용자가 자신임을 증명하는 기능 2. 인가(권한) : 권한이 있는 사용자만 사용할 수 있도록 허가하는 기능 PasswordEncoder 사용자가 사용하는 패스워드를 암호화해서 사용하는 것 만약 암호화를 하고싶지 않다면 {noop}이라는 문자열을 앞에 추가하여 이용하면 된다. : 간단한 설정으로 csrf를 통해 해킹을 막을 수 있다. SpringBootSecurityDemo Spring Boot DevTools, Loombok, Spring Web, Thymeleaf를 dependencies에 추가해준다 HomeController.java 생성 리턴타입이 void임으로 요청한 url이 곧 html이 되는 것이다. 즉 hello.html로 자동 연결이 된다. hel..
extends SpringBootServletInitializer CRUD(DB) HttpMethod URL SELECTALL GET Http://localhost:8080/members SELECTONE GET Http://localhost:8080/members/jimin INSERT POST Http://localhost:8080/members UPDATE PUT Http://localhost:8080/members/jimin DELETE DELETE Http://localhost:8080/members/jimin 브라우저에서는 PUT과 DELETE를 사용하지 못하기 때문에 PostMan을 이용하여 테스트를 할 수 있다. GET방식과 Post방식,Put, DELETE가 같은 URL이 같더라도 ht..