JAVA SPRING44 직렬화(Serialization)와 역직렬화(Deserialization) 정의- 객체 지향 프로그래밍에서 사용되는 개념- 객체를 데이터 스트림으로 변환하거나 데이터 스트림에서 객체로 변환하는 과정- 이러한 과정은 객체의 상태를 저장하고 나중에 다시 복원하는 데 사용. - 주로 객체를 파일에 저장하거나 네트워크를 통해 전송하는 상황에서 유용하게 활용 +데이터 스트림(Data Stream)은 데이터를 연속적인 일련의 바이트로 표현하는 것직렬화 (Serialization)- 직렬화는 메모리에 존재하는 객체를 디스크에 저장하거나 네트워크 통신을 위해 형식에 맞는 데이터로 변환하는 과정- 객체를 메모리 상태에서 바이트 스트림 또는 문자열로 변환하여 외부 저장소에 저장하거나 전송- 주로 객체의 필드 값과 클래스 정보가 직렬화- 예를 들어, 자바에서는 `Serializable` 인터페이스.. JAVA SPRING/etc 2023. 10. 10. HttpServletRequest request 주로 웹 애플리케이션에서 HTTP 요청을 처리하는 서블릿 또는 컨트롤러에서 자동으로 생성되고 제공되는 객체입니다. 이 객체는 클라이언트에서 서버로 HTTP 요청을 보낼 때 서버 측에서 자동으로 생성되며, 해당 요청을 처리하는 메서드에 매개변수로 전달됩니다. 웹 애플리케이션에서 HTTP 요청과 관련된 정보를 제공하는 Java Servlet API의 일부입니다. 이 객체를 사용하면 클라이언트에서 서버로 보낸 HTTP 요청에 관한 다양한 정보에 액세스할 수 있습니다. 주로 다음과 같은 정보와 데이터가 넘어옵니다. HTTP 메서드: 요청이 사용한 HTTP 메서드 (GET, POST, PUT, DELETE 등)를 확인할 수 있습니다. 요청 URL: 클라이언트가 요청한 URL을 확인할 수 있습니다. 요청 헤더: H.. JAVA SPRING/etc 2023. 10. 5. JSON 배열 다루기 JSON 배열 데이터를 파싱// 클라이언트에서 전송된 JSON 배열 데이터를 파싱 JSONArray array = JSONArray.fromObject(param.get("paramMaplist"));클라이언트에서 전송된 JSON 배열 데이터를 서버에서 사용할 수 있는 형태로 변환 작동 순서param 객체에서 "paramMaplist" 키로 전달된 데이터를 가져온다,(이 데이터는 JSON 배열 형태로 클라이언트에서 전송되었다고 가정)JSONArray.fromObject(...) 메서드를 사용하여 JSON 배열 데이터를 자바의 JSONArray 객체로 파싱.이렇게 파싱된 배열은 이후에 자바 코드에서 사용할 수 있게 됨 클라이언트에서 다음과 같은 JSON 배열을 전송했다고 가정하면"paramMaplis.. JAVA SPRING/etc 2023. 10. 5. 10. 장바구니 담기 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개 이상 담아주세요") pr.. JAVA SPRING/PROJECT 2023. 9. 12. 9.주문 취소 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) { .. JAVA SPRING/PROJECT 2023. 9. 12. 8.주문 이력 조회 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.. JAVA SPRING/PROJECT 2023. 9. 12. 7.주문 기능 고객이 상품 주문하는 기능 구현 1.OutOfStiockException/** * - 고객이 상품을 주문하면 현재 상품의 재고에서 주문수량만큼 재고를 감소시켜야한다. * - 주문수량 > 재고수량 == 주문x 이럴때 발생시킬 exception 정의 */package com.shop.exception;public class OutOfStiockException extends RuntimeException { public OutOfStiockException(String message){ super(message); }} 2.Item//상품 재고 감소 로직//엔티티 안에 비즈니스 로직 작성하는 이유 : 코드의 재사용, 데이터의 변경 포인트 한군.. JAVA SPRING/PROJECT 2023. 9. 12. 6.메인 화면 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 .. JAVA SPRING/PROJECT 2023. 9. 12. 5.상품 관리하기 : Querydsl 등록된 상품 리스트를 조회할 수 있는 화면 만들기상품을 조회하는 조건 설정,페이징기능,선택한 상품 상세 페이지로 이동 조회조건1.상품 등록일2.상품 판매 상태3.상품명 or 상품 등록자 아이디조회조건이 복잡한 화면은 Querydsl을 이용해 조건에 맞는 쿼리를 동적으로 쉽게 생성하자. 1.사용자 정의 인터페이스 작성 2.사용자 정의 인터페이스 구현 3.Spring Data Jpa 리포지토리에서 사용자 정의 인터페이스 상속 1.ItemSearchDto/** * 상품 조회 조건을 가지고 있다. */@Getter @Setterpublic class ItemSearchDto { private String searchDateType; //현재 시간과 상품 .. JAVA SPRING/PROJECT 2023. 9. 12. 4.상품 수정하기 상품 등록 기능을 구현하였으니상품 상세 페이지 진입 및 상품 데이터 수정하는 기능 구현하자1.ItemService//등록된 상품을 불러오는 메소드@Transactional(readOnly = true) //상품 데이터를 읽어오는 트랜잭션을 읽기전용으로 -> 더티체킹(변경감지)수행하지 않아서 성능 향상public ItemFormDto getItemDtl(Long itemId){ List itemImgList = itemImgRepository.findByItemIdOrderByIdAsc(itemId); List itemImgDtoList = new ArrayList(); //조회한 ItemImg 엔티티를 ItemImgDto 객체로 만들어서 리스트에 추가 for (I.. JAVA SPRING/PROJECT 2023. 9. 12. 3.상품 등록하기 @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.. JAVA SPRING/PROJECT 2023. 9. 12. 2.연관관계 매핑 실선 : 부모의 키가 일반키점선 : 부모의 키가 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.. JAVA SPRING/PROJECT 2023. 9. 12. 이전 1 2 3 4 다음