Spring과 JPA를 활용한 간단한 쇼핑몰 웹 사이트 제작기 지속적으로 스프링을 배우는 동안 무엇인가 알 수 없는 회의감에 빠졌다. "내가 지금 공부하고 있는 것이 실제 어떤 상황에서 어떻게 적용되는 것일까?" 에서 오는 막막함이었다. 결국 기술들을 계속해서 이론으로
본격적으로 쇼핑몰을 만들기 위한 기본 DB 설계 1. 프로젝트 주제 프로젝트 도메인은 애완동물 🐶 용품을 파는 Online pet shop을 해보고 싶었다. (나는 강아지를 정말 좋아한다..) 스프링 프로젝트를 시작하기 위해 https://start.sprin
본격적으로 상품 엔티티를 설계하게 되었다. `@Entity` 어노테이션을 붙여 JPA에서 관리하게끔 만들었다. ## Entity 설계 ```java package com.shop.entity; import com.shop.constant.ItemSellStatu
쿼리 메소드를 통해 상품 데이터를 조회하기로 했었다. 그런데 앞으로 조건이 많아질 것 같았다. 이럴 땐, 오히려 쿼리 메소드를 해석하는게 더 어려울 것이다. 이를 보완하는 방법으로 Spring Data Jpa에서 제공하는 `@Query` 어노테이션을 사용했다. ##
Spring Security 를 활용한 회원가입 기능 구현 스프링 시큐리티를 사용하기 위해 의존성을 추가. pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sprin
회원 가입 로직을 구성했으므로 이제는 실제 회원 가입 페이지로 이동할 수 있도록 MemberController 클래스에 메소드를 작성한다.com.shop.controller.MemberController.java이제 회원가입 후, 메인 페이지로 갈 수 있도록 MainC
스프링 시큐리티를 이용해 로그인/로그아웃 기능을 구현 스프링 시큐리티에서 UserDetailService 인터페이스는 DB에서 회원 정보를 가져오는 역할을 담당한다는 것을 알게 되었다. 따라서 이를 구현하는 클래스를 만들어 로그인 기능을 구현했다. 이전에 만들었던 M
페이지 접근 권한을 설정 상품 등록 페이지는 ADMIN. 즉, 관리자 계정에서만 접근이 가능하고 일반 USER 계정은 접근을 할 수 없도록 설정하는 것이 필요했다. 이를 위해 상품등록 페이지에 접근하는 컨트롤러 (ItemController) 에서 상품등록을 관리자로
Entity 들 간의 연관 관계를 매핑 1. 연관 관계 매핑의 종류 프로젝트를 위해 공부를 하면서 연관 관계 매핑에는 총 4가지의 매핑 관계가 있다는 것을 알게 되었다. 일대일 (1:1) : @OneToOne 일대다 (1:N) : @OneToMany 다대일 (N:1
연관된 엔티티를 사용할 때 조회하는 지연 로딩FetchType.EAGER 로 설정일대일, 다대일로 매핑할 때 OrderItem Entity 혹은 Order Entity를 조회하려고 한다면 Order Entity의 경우, 자신과 다대일로 매핑된 Member Entity까
상품 등록쇼핑몰이라면 관리자 혹은 운영자가 상품을 등록해야만 소비자들이 쇼핑몰에 접속하여 상품을 구입할 수 있을 것이다. 따라서 상품 등록 기능을 구현하는 것을 첫 번째 목표로 삼았다.상품을 등록하였을 때, 상품의 이미지들을 보여주고, 대표 이미지가 있다면 메인 페이지
상품 등록 기능 구현 2 1. 이미지 업로드 기능 구현 상품을 등록할 때, 상품 대표 이미지 파일을 업로드할 수 있도록 해주었다. 따라서 이미지 파일 경로를 설정해주고 프로젝트 내부가 아닌 자신의 컴퓨터에서 파일을 찾는 경로를 설정해주어야한다. WebMvcConf
등록한 상품 정보를 볼 수 있는 상품 상세 페이지 및 상품 데이터 수정상품을 등록하는 기능을 구현했다. 그러나 등록된 상품은 항상 수정이 가능하여야 할 것이다. 즉, 수정 기능을 구현해야한다. 기능을 만들기 위해 해야할 것들을 생각해보았다. 상품 이미지를 어떤 방식으로
관리자 측면에서 등록된 상품 리스트를 조회할 수 있는 관리 기능 상품을 조회하는 조건을 설정하고 페이징 기능을 통해 일정 개수의 상품을 불러오고, 상품 상세 페이지로 이동할 수 있는 기능까지 갖춘 관리 기능을 만들었다. 조회 조건으로는 상품 등록일 상품 판매 상태
지금까지 상품을 등록하고, 고객이 등록된 상품을 볼 수 있도록 구현했다. 이번에는 고객이 등록된 상품을 주문하는 기능을 구현하기로 했다. ⚙️ Item Order Logic ⚙️ 상품 주문 또한, 기존 상품 등록이나 수정과 같이 Entity 를 구성하고 Servic
고객이 상품을 주문하고 주문 내역을 조회하는 페이지온라인 쇼핑몰에서는 내가 주문한 내역을 확인할 수 있다. 주문 이력 페이지에서는 보통 주문한 상품정보와 현재 상품의 배송 단계까지 보여준다. 주문 내역을 통해 반품 혹은 교환, 취소 등을 진행할 수도 있다. 프로젝트에서
🧺 장바구니 기능 구현 주문 기능까지 구현했기 때문에 어느정도 쇼핑몰에 관한 핵심적인 기능들은 갖추었다. 이제는 부가적인 기능들을 다룰 생각이다. 온라인 쇼핑몰의 "장바구니" 기능이다. 상품 상세 페이지에서 장바구니에 담을 수량을 선택하고 장바구니 담기 버튼을 클릭할
장바구니에 들어있는 상품 조회 기능 구현 요즘 들어 코딩테스트 준비로 바쁘게 살아가고 있다. 프로그래머스에서 Spring 인턴 공고가 떠서 그걸 준비하고 있는데 역시 코테는 하면 할수록 내가 많이 부족하다는 것을 느낀다. 알고리즘과 자료구조에 대해 더욱 빡세게 공부해야
조회한 장바구니 품목의 수량 변경과 삭제 기능 구현 장바구니 조회까지 기능을 마무리하였다. 이제 장바구니에서 상품의 수량을 변경할 경우, 실시간으로 회원 장바구니 상품의 수량도 변경되도록 하였다. 먼저 CartItem 에 현재 장바구니에 담겨있는 수량을 변경하는 메소드
장바구니 목록 중 체크박스가 선택된 상품을 주문하는 기능 장바구니의 기능을 거의 구현한 상태이다. 이제 장바구니에서 바로 주문을 할 수 있게끔 하는 기능을 만들어보았다. 장바구니에서 주문을 하게 되면 기존에 상품 페이지에서 주문을 하는 것과 다른 점은 여러 개의 상품을
한동안 여러 시험과 코테들을 보느라 바쁜 나날들을 보내고 있다.🥲 따로 포스팅할 기회가 있으면 좋을 것 같은데 한 가지 좋은 소식으로는 지난달 프로그래머스 백엔드 데브코스를 지원했던 것의 코딩테스트 결과가 나왔다. 결과는 합격!🎉 그리고 지금은 면접까지 본 상태이다
회원가입에 관해서 기능이 추가될 것이 없는지 계속 생각하다가 한 가지 중요한 기능을 빠뜨렸다는 것을 깨달았다.😓 현재 플젝으로 만들고 있는 사이트는 쇼핑몰 사이트라는 것을 감안해볼 때, 고객들이 등록된 상품을 구입할 때, 구입한 상품이 자택 혹은 원하는 배송지로 배송
계속해서 쇼핑몰 관련 기능들을 추가하고 있다. 이번에 또 어떤 기능을 추가할까 고민하던 차에 회원가입 할 때, 사용할 수 있는 기능을 구현해보고자 하였다. 바로 이메일 인증 기능이다. 사실 이메일 인증 기능은 사용자보다는 관리자입장에서 더 중요한 기능일 것이다. 만약
회원가입 이메일 기능을 구현하던 중에 발생한 오류를 해결하는 과정이다.전의 이야기... 사실 이때쯤 되니 오기가 생기기 시작했다. 간단한 이메일 인증 서비스도 구현 못하면 앞으로의 기능들은 더욱 만들기 어려울 것 같았다. 그래도 지금까지의 401 오류가 아니라 403
올해 상반기도 끝났다. 여러가지 도전을 통해 새로운 경험을 얻기를 원했지만 결국 코테나 서류에서 탈락하거나 면접까지 갔지만 아쉽게 탈락의 고배를 마신 경험들이었다...😥 좌절도 하고 실패의 쓴맛을 맛보았지만 이로 인해 나는 더욱 성장했음을 믿는다. 계속해서 넘어져도
회원 관련 기능회원 관련 기능들을 계속해서 구현 중에 있다. 우리가 웹 사이트에 가입했는데 시간이 지나 다시 접속하려고 했을 때, 비밀번호를 까먹었던 경험...😲 한번쯤은 있을 것이다. 그럴 때를 대비해 웹에서는 가입한 회원이 자신의 이메일을 입력했을 때, 입력한 이
1. 중간 회고 올해 여름은 불반도가 분명하다. 🥵 정말 무더운 나날들이 계속되고 있고 푹푹찌는 더위에 집보다는 도서관에서 살고 있다. 언제쯤 시원한 가을이 올런지... 여튼 저번 포스팅 이후, 여러가지로 바빴지만 틈나는대로 쇼핑몰을 계속 뚝딱거리면서 여러가지를
지난번에 회원들마다 회원 정보를 조회할 수 있는 마이페이지를 구현한 적이 있었다. 그러나, 마이페이지는 보통 회원정보 조회뿐만 아니라 회원정보를 수정할 수 있는 기능 또한 갖추고 있는 것이 보통이다. 이번에는 마이페이지를 통해 회원 정보를 수정하였을 때, 바뀐 정보를
회원정보 변경 기능 구현 ing...저번 포스팅에서 보다시피 비밀번호를 입력했을 때, 회원 정보를 수정할 수 있는 폼을 띄우는 것까지 구현을 마쳤다. 이제 실제로 View를 통해 회원 관련 정보들을 수정하고 이를 DB에 업데이트하는 기능을 마무리해볼 것이다.회원 정보를