Spring Projcect 63

회원 아이디 & 비밀번호 찾기

아이디(email) 찾기 & 비밀번호 찾기 API 이메일: api/password/email 비밀번호: api/password/email/phone email을 입력받아서 존재하는 아이디인지 확인한다. 새로운 Input 클래스를 만든다. 컨트롤러에서 @RequsetBody를 적용하기 위해서 만든다. @Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor public class FindPasswordMemberInput { private String email; private String phone; } Impl 클래스 findMemberByEmail() 메서드를 findEmail(), findPhone() 에 모두 적용한다. private Mem..

[9일차] 관리자 API - 상품 등록, 수정, 삭제

To do list 관리자 - 상품(등록, 수정, 삭제), 관리자 주문 확인 list() 회원 - 상품(조회), 주문 add, 주문 del, (주문 수정은 보류), 장바구니 (조회, 선택 삭제), 쿠폰 조회 Ex) 상품 등록 / 수정 등록과 수정은 get, post 매핑을 함께 사용한다. 변수 editMode로 add 페이지에서 등록 모드인지 수정 모드인지 구분한다. service @Override public boolean add(ProductInput parameter) { Product product = Product.builder().productName(parameter.getProductName()) .productImg(parameter.getProductImg()).stockQuantity..

[8일차] Order 엔티티 매핑

1. 주문 ORDERS Orders - Member : 다대일 관계 데이터베이스의 키워드로 order가 있으니까 구분하기 위해 orders를 넣는다 order 테이블에 여러 개의 order가 모두 보여야한다. 컬렉션이라서 중간 테이블이 생성된다. @OneToMany private List orderList = new ArrayList(); @ManyToOne(cascade = CascadeType.ALL) // order, member 중에서 order를 연관관계의 주인으로 만들려면? private Member member; OrderDetail - Product : 일대다 관계 컬렉션이라서 중간 테이블이 생성된다. Datail 테이블에서는 상품 정보가 필요하지만 상품 테이블에서는 주문 상세 정보가 필요..

[7일차] 관리자 API - 상품 조회

1. Product 관리 - 등록, 수정, 삭제 ProductDto (상품 리스트 반환할 때 쓰인다.) 엔티티인 Product를 직접 사용해서 어떤 코드를 작성하면 참조형 데이터의 특성상 데이터베이스의 내용이 바로 변경될 우려가 있다. 그래서 Dto라는 클래스를 이용한다. @Builder @Data @NoArgsConstructor @AllArgsConstructor public class ProductDto { private Long id; // 상품 테이블의 PK // 상품 리스트를 반환할 때 필요한 정보 private String productName; private Integer price; // 상품 가격 private Boolean soldOutYn; // 품절 여부 private String..

[6일차] 관리자 로그인, 상품 등록

오류) 순환 참조 오류 & admin.main.do을 입력해도 자동으로 로그인 페이지(member.login)로 이동한다. The dependencies of some of the beans in the application context form a cycle: ┌─────┐ | securityConfiguration defined in file [C:\Users\Ran\Desktop\R\zerobase\remote_mall\build\classes\java\main\com\example\mall\configuration\SecurityConfiguration.class] ↑ ↓ | memberServiceImpl defined in file [C:\Users\Ran\Desktop\R\zerobase\..

[5일차] 연관 관계 매핑 - 장바구니, 쿠폰

1. 고객 - 장바구니 매핑하기 (일대일) Member @OneToOne @JoinColumn(name = "CART_ID") // 카트의 변수명과 달라도되나??? private Cart cart; Cart 엔티티 추가 @Entity @Builder @NoArgsConstructor @AllArgsConstructor @Data public class Cart { @Id @GeneratedValue() private Long id; private String name; @OneToOne(mappedBy = "cart") @JoinColumn private Member member; // mappedBy를 조인컬럼으로 바꾸면? mamberId 컬럼 생긴다. } MemberServiceImpl - 이메일 인..

Chapter 02. 프로젝트 준비하기

2.1 브랜치 전략 2.2 코드 리뷰 효과적인 코드 리뷰 가능한 작은 단위인 PR(Pull Request)을 생성한다. 충분한 정보를 제공한다. 부드러운 토론 2.3 구현 목록 사용 기술 Java 11 gradle DataBase RDB: MySQL Docker 기반의 MySQL 생성 컨테이너 기반 프로젝트마다 다른 DB를 쓸 수 있다. Non-RDB: Redis 2.4 기반 작업 Docker 데이터베이스 만들고 연결하기 정상적으로 실행하면 cmd 창에 docker을 입력했을 때 아래와 같이 정보가 나온다. C:\Users\Ran>docker Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Options: --config ..

Chapter 01. 프로젝트 진행 전

1.1 주제 선정 무엇을 위해 만드는지 명심 타겟에 집중하고 타겟이 원하는 것을 만든다. Worst Case 백엔드가 할 일 없는 프로젝트 알맹이 없는 프로젝트 서류 검토자가 원하는 우선 순위 실제 서비스 런칭/ 운영 경험 기술적인 역량을 잘 보여줄 수 있는 프로젝트 번뜩이는 아이디어 팀 프로젝트의 기준 규모 1~2 개월 안에 집중해서 끝낼 수 있는 분량 개발 기간 또한 역량을 나타낼 수 있는 척도 중 하나이다. 설계, 구현, 문서 작성을 포함한 기간 최소 3주 권장: 4 ~ 6주 최대: 8주 팀 프로젝트 역할 분배 역할을 잘 나눌 수 있는 카테고리가 존재하는가 공유하는 분야와 각자 주인이 되는 것들이 공존하는 것이 가장 좋다. 1.2 MSA (Micro Service Architecture) 소개 Mo..

[4일차] 오류 해결, 로그인 히스토리

확인 사항 JPA repository를 상속하는 MemberRepo에서 Member의 필드명과 다른 다르게 구성된 메서드가 있으면 멤버와 관련한 모든 클래스에 대해 "BeanCreatrion"가 발생한다. 똑같은 오류가 여러 번 발생했다.. 주의하기!. 오류 - 순환 참조 원인: Impl 클래스와 securityConfig 간에 순환하는 문제가 발생 The dependencies of some of the beans in the application context form a cycle: ┌─────┐ | securityConfiguration defined in file [C:\Users\Ran\Desktop\R\zerobase\remote_mall\build\classes\java\main\com\e..

[3주차] 회원 가입, 로그인

1. 회원 가입 주소 impl클래스에 Member.build()하면 데이터베이스에 내용이 추가된다. 컨트롤러에 "detail"이라는 이름으로 model을 넣어준다. html 작업 컨트롤러 POST에는 model이 필요하지 않을 수도 있다. @GetMapping("/member/register") public String register(){ return "member/register"; } @PostMapping("/member/register") public String submit(Model model , MemberInput parameter , Principal principal){ boolean result = memberService.register(parameter); // 이미 계정이 있는..