Ajax를 이용한다면웹 페이지 전체를 다시 로딩하지 않고 일부분만을 갱신할 수 있다. 즉 백그라운드 영역에서 서버와 통신하여, 그 결과를 웹 페이지의 일부분에만 표시할 수 있다.\ 댓글 등록시 바로 등록되고 삭제시 바로 삭제된다. (새로고침되지않음)세션 등록을 했기 때문에 댓글 작성자만 삭제 가능하다. Asynchronous JavaScript and XML 으로 동적인 웹 페이지를 만들기 위한 개발 기법이며이때 서버와는 다음과 같은 다양한 형태의 데이터를 주고받을 수 있다. - JSON - XML - HTML - 텍스트 파일 등 동작원리① : 사용자에 의한 요청 이벤트가 발생합니다.② : 요청 이벤트가 발생하면 이벤트 핸들러에 의해 자바스크립트가 호출됩니다.③ : 자바스크립트는 XMLHttpRe..
#엔티티(Entity) - 객체 , 추상적 - DB에서 한 건의 자료를 구성하는 레코드로 속성을 가진다. ex) 과목 : 국,영,수 - DB나 SQL상에 존재하지 않는다. 테이블과 달리 그냥 일종의 개념이다. - 엔티티 사이의 관계: 릴레이션(relationship) - 이것을 도표로 나타낸 것 : ERD(Entity Relationship Diagram) - 도메인 > 엔티티 > 속성 #테이블 - 테이블은 데이터베이스나 SQL에 실제로 존재하며 물리적인 구조를 지니고 있다. #엔티티, 테이블의 차이 엔티티 테이블 속성, 어트리뷰트(Attribute) 컬럼(Column) 관계, 릴레이션(Relation) 관계, 릴레이션(Relation) 키 그룹(Key group) 인덱스(Index) 엔티티(Entity..
1.CartItemDto/** * 상품 상세 페이지에서 장바구니에 담을 상품 아이디와 수량 전달받음 */package com.shop.dto;import lombok.Getter;import lombok.Setter;import javax.validation.constraints.Min;import javax.validation.constraints.NotNull;@Getter @Setterpublic class CartItemDto { @NotNull(message = "상품 아이디는 필수 입력 값 입니다.") private Long itemId; @Min(value = 1 ,message = "최소 1개 이상 담아주세요") private int count;} 2.Cart/* ..
1.상태 취소로 만들것2.상품 재고 감소 시켰던 만큼 더하기 1.Item//상품 재고 증가 (주문취소시)public void addStock(int stockNumber){ this.stockNumber += stockNumber;} 2.OrderItem//주문 취소public void cancel(){ this.getItem().addStock(count);} 3.Order//주문 취소 = 상품 재고 더하기 + 주문상태 취소로 바꾸기public void cancelOrder() { this.orderStatus = OrderStatus.CANCEL; for (OrderItem orderItem : orderItems) { ..
1.OrderItemDto/** * 조회한 주문 데이터 화면에 보낼때 사용 * 주문 상품 정보 담음 */package com.shop.dto;import com.shop.entity.OrderItem;import lombok.Getter;import lombok.Setter;@Getter @Setterpublic class OrderItemDto { public OrderItemDto(OrderItem orderItem, String imgUrl){ this.itemNm = orderItem.getItem().getItemNm(); this.count = orderItem.getCount(); this.orderPrice = ord..
고객이 상품 주문하는 기능 구현 1.OutOfStiockException/** * - 고객이 상품을 주문하면 현재 상품의 재고에서 주문수량만큼 재고를 감소시켜야한다. * - 주문수량 > 재고수량 == 주문x 이럴때 발생시킬 exception 정의 */package com.shop.exception;public class OutOfStiockException extends RuntimeException { public OutOfStiockException(String message){ super(message); }} 2.Item//상품 재고 감소 로직//엔티티 안에 비즈니스 로직 작성하는 이유 : 코드의 재사용, 데이터의 변경 포인트 한군..
1.MainItemDto/*** 메인 페이지에서 상품을 보여줄때 사용*/package com.shop.dto;import com.querydsl.core.annotations.QueryProjection;import lombok.Getter;import lombok.Setter;@Getter @Setterpublic class MainItemDto { private Long id; private String itemNm; private String itemDetail; private String imgUrl; private Integer price; @QueryProjection //Querydsl 결과 조회시 MainItemDto ..
등록된 상품 리스트를 조회할 수 있는 화면 만들기상품을 조회하는 조건 설정,페이징기능,선택한 상품 상세 페이지로 이동 조회조건1.상품 등록일2.상품 판매 상태3.상품명 or 상품 등록자 아이디조회조건이 복잡한 화면은 Querydsl을 이용해 조건에 맞는 쿼리를 동적으로 쉽게 생성하자. 1.사용자 정의 인터페이스 작성 2.사용자 정의 인터페이스 구현 3.Spring Data Jpa 리포지토리에서 사용자 정의 인터페이스 상속 1.ItemSearchDto/** * 상품 조회 조건을 가지고 있다. */@Getter @Setterpublic class ItemSearchDto { private String searchDateType; //현재 시간과 상품 ..
상품 등록 기능을 구현하였으니상품 상세 페이지 진입 및 상품 데이터 수정하는 기능 구현하자1.ItemService//등록된 상품을 불러오는 메소드@Transactional(readOnly = true) //상품 데이터를 읽어오는 트랜잭션을 읽기전용으로 -> 더티체킹(변경감지)수행하지 않아서 성능 향상public ItemFormDto getItemDtl(Long itemId){ List itemImgList = itemImgRepository.findByItemIdOrderByIdAsc(itemId); List itemImgDtoList = new ArrayList(); //조회한 ItemImg 엔티티를 ItemImgDto 객체로 만들어서 리스트에 추가 for (I..
@ManyToOne : itemimg의 입장에서 하나의 item에 여러개의 사진 가능 @JoinColumn(name = "item_id") //fk 1.ItemImg 엔티티package com.shop.entity;import lombok.Getter;import lombok.Setter;import javax.persistence.*;/** * 상품 이미지 엔티티 */@Entity@Getter @Setter@Table(name = "item_img")public class ItemImg { @Id @Column(name="item_img_id") @GeneratedValue(strategy = GenerationType.A..
실선 : 부모의 키가 일반키점선 : 부모의 키가 pk (한쪽만 pk) item의 입장에서 order_item, cart_item은 일대다 하나의 상품은 여러 주문 상품, 장바구니에 들어갈 수 있다. 반대로order_item, cart_item의 입장에서 item은 다대일하나의 상품은 여러 주문 상품+ 여러 장바구니의 장바구니 상품 으로 들어갈 수 있다 Item.java@Id @Column(name = "item_id") //테이블에 매핑될 컬럼의 이름//item클래스의 id변수와 item테이블의 item_id컬럼이 매핑되도록@GeneratedValue(strategy = GenerationType.AUTO) private Long id; //상품코드O..
Memberpackage com.shop.entity;import com.shop.constant.Role;import com.shop.dto.MemberFormDto;import lombok.Getter;import lombok.Setter;import lombok.ToString;import org.springframework.security.crypto.password.PasswordEncoder;import javax.persistence.*;@Entity@Table(name="member_id")@Getter@Setter@ToStringpublic class Member extends BaseEntity { @Id @Column(name ..