전체 글 229

[SpringBoot & JPA 프로젝트] 주문테이블 설계

주문하기는 모든 테이블과 연관되어있어서 마지막으로 남겨뒀다. 주문하기 테이블 설계에 대한 고민 1. 장바구니를 구현한것과 동일하게 구현 Cart - CartItem 테이블을 만들어서 장바구니 기능을 구현한 것 처럼 Order - OrderItem 테이블을 만드는 방법. '주문하기' 버튼을 누르면 Order-OrderItem 테이블에 정보가 저장되고 이를 결제 전 최종확인 단계에서 볼 수 있음. 결제가 완료되면 결제여부를 알려주는 컬럼의 값이 변경됨. But 나는 Order 테이블에 결제 완료된 애들만 저장하고 싶은데 ? => 일단보류. 2. 상품번호를 배열에 저장해 파라미터로 넘기는 방법 결제 전 최종확인 단계에서 주문정보를 보여줘야 함. 이 때 보여줄 정보는 상품번호를 배열로 받아서 findById 메..

프로젝트 2022.09.05

[독서] 그림으로 배우는 Http&Network Basic - 우에노 센 지음

프로토콜 서로 다른 하드웨어와 운영체제등을 가지고 서로 통신을 하기 위해서는 모든 요소에 규칙이 필요한데, 이러한 규칙을 프로토콜이라한다 TCP/IP 인터넷과 관련된 프로토콜들을 모은것을 TCP/IP 라 한다 IP - 배송을 담당 TCP - 대용량의 데이터를 보내기 쉽게 작게 분해하여 상대에게 보내고, 잘 도착했는지 확인함 DNS - 도메인 이름과 IP 주소 이름 확인을 제공함 ex ) 사람은 영어로 도메인을 검색해 찾아가는게 편하지만 컴퓨터는 숫자가 편하다. DNS 가 사람과 컴퓨터 사이에서 이를 도와줌 URL 웹 브라우저 등으로 웹페이지를 표시하기 위해 입력하는 주소 리소스의 장소(네트워크 상의 위치)를 나타냄 URI 리소스 식별자 리소스를 식별하기 위해 문자열 전반을 나타냄 ▷ 절대 URI 포맷 ※..

개발서적 2022.08.26

[SpringBoot & JPA 프로젝트] 장바구니에 상품 추가하기 / 삭제하기

과제 : '장바구니' 버튼 클릭 시 해당 상품이 장바구니에 들어감 내가 만들 장바구니는 '세상에 단하나 존재하는 뜨개상품' 을 판매하는 마켓 특성상 장바구니에 담길 상품의 수량을 선택하지않아도 된다 모든 사용자는 1개의 장바구니 (Cart) 를 가지고, 장바구니 안에는 Item들을 넣을 수 있다. 장바구니 안에 들어가는 Item 들을 CartItem 라고 하기로 했다 Cart 와 User 를 OneToOne 연관관계를 맺어주고 Cart는 List 을 변수로 갖으며, 둘은 OneToMany 로 연관관계를 맺어주었다. 위 내용을 좀 더 직관적으로 바라보기 위해서 그림으로 그려봤다 Cart @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(n..

프로젝트 2022.08.25

[SpringBoot & JPA 프로젝트] 판매자 : 상품삭제하기 (delFlag)

판매자가 게시한 상품삭제하기 '상품삭제' 를 구현하는 것은 여러가지 방법중에 선택할 수 있다 1. 물리삭제 (Hard Delete) - JpaRepository delete 를 사용하여 db에서 해당 상품 관련 데이터를 싹 날린다 2. 논리삭제 (Soft Delete) - flag 를 통해 삭제 여부를 관리함 JPA delete 메서드 사용해보고싶긴한데 물리삭제는 상품삭제 구현에 적합하지 않은것같아서, 이건 장바구니 상품 삭제할때 사용해보기로하고, flag 변수를 추가했다 Item (Entity) private boolean isDeleted = Boolean.FALSE; public void deleteItem(ItemResponseDto itemResponseDto){ this.isDeleted = ..

프로젝트 2022.08.24

[Thymeleaf] 프로젝트에 사용한 타임리프 문법 정리

※ How to use multiple condition in if tag using thymeleaf ? 타임리프에서 이중 if 사용 타임리프에서 if and 'and' 사용 수정하기 session 에 저장된 role 값이 "user" 이고, item의 sellerId 값이 session 의 id 값과 동일하다면 '수정하기' 버튼을 보여줘라 ※ How to formate LocalDateTime in Thymeleaf ? 타임리프에서 LocalDateTime 타입 format temporals.format 사용 ${#temporals.format(LocalDateTime,'yyyy-MM-dd')} ※ How to formate number in Thymeleaf ? 1000단위 쉼표 찍기 numbers..

HTML 2022.08.19

[Spring Boot & JPA 프로젝트] 상품등록 / 파일업로드(다중X)

판매자는 상품등록 시 반드시 상품이미지를 첨부해야하며, 상품이미지는 1장만 첨부가능하다 Item 클래스에 파일컬럼으로 FileEntity 클래스 변수를 넣고 OneToOne 단방향 매핑으로 연관관계를 맺어줬다 엔티티별로 requestDto와 responseDto 를 만들어서 Entity 에 직접접근을 막음 ▶ 상품등록 (이미지 등록) Item package com.proj.KnitMarket.domain.Item; import com.proj.KnitMarket.Constant.SellStatus; import com.proj.KnitMarket.domain.BaseEntity; import com.proj.KnitMarket.domain.Member.Seller; import lombok.*; impo..

프로젝트 2022.08.17

[SpringBoot & JPA 프로젝트] enum

Item 의 SellStatus 컬럼을 Enum 클래스로 만들어보기로 했다 enum 써보고싶었음 @Enumerated 어노테이션을 사용해야하는데, Enumerated 는 '열거' 라는 뜻이다. 열거라는 뜻에 알맞게 클래스는 이렇게 값을 나열하는것만으로 완성이다. 그리고 해당 클래스 컬럼에 @Enumerated 어노테이션을 붙여주면된다 Item.java EnumType 에는 ORDINAL 과 STRING 이 있다. ORDINAL : enum 클래스에서 선언한 순서가 DB에 저장된다 ( 1 or 2 ) STRING : enum 클래스에서 선언된 문자열이 DB에 저장된다 ( SELL or SOLDOUT ) 물론 숫자로 넣는게 모든면에서 최적화되어 좋겠지만, 토이프로젝트에 공부차 적용해보는것이라서 직관적으로 판..

프로젝트 2022.08.17

[SpringBoot & JPA 프로젝트] 뜨개장터 소개

※ SpringBoot & JPA 개인 프로젝트 Github : https://github.com/HAN-SEOHYUN/KnitMarket 🏹 서론 더보기 6개월 과정의 국비 학원 과정이 끝나고 취업 준비를 해야함이 맞으나 혼자서 온전히 서비스를 만드는 토이프로젝트를 진행해보고싶었다. 개발을 배우고 작은 기능을 구현 할 수 있게된 시점부터 만들어보고싶다고 생각해왔던 서비스가 있었고, 지금이 아니면 이 서비스는 앞으로도 머리속에서 나오지 못할 것 같았다. ( 취업 후에는 아무래도 회사 업무를 우선적으로 배워야하니 현실적으로 불가능하다고 생각했기때문 ) 학원에서 진행했었던 마지막 팀프로젝트는 스프링부트 & JSP & Mybatis & Oracle 을 이용했었는데, 똑같은 환경에서 프로젝트를 만들면 재미없으니..

프로젝트 2022.08.17