FrameWork (총 119개) 썸네일형 리스트형 Spring JPA - JPA를 이용해 Commerce App 만들기 - 7 (장바구니 기능 추가) 이번 포스팅에서는 장바구니 기능을 추가해보도록 하겠습니다 이번 포스팅에서는 장바구니 기능을 추가해보도록 하겠습니다. 전체코드 : https://gitlab.com/galid1/jpa-commerce 1. 장바구니 도메인 계층1.1 요구사항 분석장바구니 기능에는 어떠한 기능들이 필요할지 먼저 파악해보겠습니다.장바구니에 여러 아이템을 추가할 수 있어야한다.아이템 추가시 이미 장바구니에 존재한다면, 수량을 증가 시켜야 한다.어떤 아이템을 얼만큼(수량) 담고 있는지 알 수 있어야한다.담고 있는 아이템을 제거할 수 있어야 한다.담고 있는 아이템의 수량을 수정할 수 있어야 한다. 1.2 설계1. 기능 추출하기public class CartEntity { public void addItemToCart(CartLine.. Spring JPA - JPA를 이용해 Commerce App 만들기 - 6 (계층별 테스트코드 작성) 이번 포스팅에서는, 계층별 테스트 코드 작성을 해보도록 하겠습니다 이번 포스팅에서는, 계층별 테스트 코드 작성을 해보도록 하겠습니다. https://galid1.tistory.com/783테스트코드를 작성해야하는 이유와, 간단한 팁들은 위 링크에 정리해두었습니다. 1. Domain 계층 테스트Domain 계층에서 테스트할 대상은 각 도메인의 애그리거트루트입니다. 이 글에서는 ItemEntity, ItemService, ItemController만을 테스트 하도록 하겠습니다. 테스트 할 것removeStockQuantity 호출시 주문 수량만큼 재고량이 차감이 되는지.재고량보다 많은 수의 주문을 할 시 에러가 발생하는지.재고량 추가시 추가수량만큼 재고량이 증가하는지.테스트 해야할 것들을 확인 했으니, 이제.. Spring JPA - JPA를 이용해 Commerce App 만들기 - 5 (컨트롤러 개발 및 뷰 개발) 이번 포스팅에서는, 실질적으로 사용자가 접근 요청을 하는 부분인 Controller와 사용자가 보게될 화면을 구현하도록 하겠습니다. 전체코드 : https://gitlab.com/galid1/jpa-commerce 1. 표현 계층의 역할 우리가 오늘 작성할 표현계층에서는 아래와 같은 일들을 수행합니다. 사용자의 요청값을 검증 사용자의 요청을 Service 계층에서 처리할 수 있는 형태로 변환합니다. Service 계층에 비즈니스 로직을 위임하고 결과값을 Model에 맵핑하여 View에 전달 결과값을 사용자에게 반환합니다. 2. 구현 2.1 ItemController 구현 @Controller @RequiredArgsConstructor public class ItemController { private .. Spring JPA - JPA를 이용해 Commerce App 만들기 - 4 (서비스, 리포지토리 개발) 전체코드 : https://gitlab.com/galid1/jpa-commerce 이번 시간에는 지난 포스팅 https://galid1.tistory.com/729 에서 완성한 엔티티를 기반으로, Service, Repository를 개발해보도록 하겠습니다. 1. Repository 도메인 객체를 지속적으로 사용하기 위해서는, 이를 영구적으로 저장하고, 다시 그것을 가져오는 방법이 필요합니다. 즉, RDBMS, MYSQL, 로컬파일과 같은 물리적 저장소에 도메인 객체를 보관해야합니다. 이를 위한 도메인 모델이 바로 Repository입니다. public interface XRepository { public X findById(Long xId); public void save(X x); public vo.. Spring Boot - Redis Cache를 통한 읽기 요청 성능향상 이번 포스팅에서는, 간단히 Redis 를 이용해, 서비스의 메소드를 캐싱하여, 읽기 성능 향상을 도모해보도록 하겠습니다. 1. 캐싱 대상 메소드 1.1 대상 메소드 간단히 살펴보기 public CategoryDto createCategoryRoot() { Map groupingByParent = categoryRepository.findAll() .stream() .map(ce -> new CategoryDto(ce.getCategoryId(), ce.getCategoryName(), ce.getParentId())) .collect(groupingBy(cd -> cd.getParentId())); CategoryDto rootCategoryDto = new CategoryDto(0l, "ROOT", n.. Spring Boot - Service Layer 테스트하기 Spring Boot Service Layer 테스트하기 이번 포스팅에서는 Spring Boot에서 Service Layer를 테스트 하는 방법에 대해 알아보도록 하겠습니다. 1. Test 대상 프로젝트1.1 의존성 (build.gradle)1.2 Class 별 설명Member.classMemberService.class *CreateMember.classMemberRepository2. Service 테스트 유의사항2.1 Service Layer는 Unit Test 2.2 테스트를 위해 제품코드를 변경하면 안된다2.3 테스트도 가독성이 좋아야 한다3. 테스트Unnecessary(Mockito 2.x 버전의 사용하지 않는 스텁감지)Stub 과 Mock 1. Test 대상 프로젝트 1.1 의존성 (buil.. Spring MVC - 수정폼 작성방법(@SessionAttributes, SessionStatus란) Spring MVC에서 수정폼을 작성하는 효율적인 방법과 @SessionAttributes에 대해 알아보도록 하겠습니다. User 정보 수정 1. 예제 어플리케이션 완성된 프로젝트 구조는 위와 같습니다. build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' } 꼭 필요한 의존성은 위와 같습니다. UserModel.class @Getter @Setter public class UserModel { private String userId; private String n.. Spring MVC - @ModelAttribute의 장점(@RequestParam와 @ModelAttribute) 이번 시간에는 사용자의 전달값을 핸들러의 매개변수로 매핑할때 사용되는 @RequestParam과 @ModelAttribute에 대해 알아보도록 하겠습니다. 1. 사용법과 예제 우선 각각의 어노테이션의 사용법과 예제를 다루어보고, 각각을 언제 사용하면 좋을지에 대해 알아보도록 하겠습니다. @RequestParam @RequestParam 어노테이션은 사용자가 요청시 전달하는 값을 Handler(Controller)의 매개변수로 1:1 맵핑할때 사용되는 어노테이션입니다. @Controller public class TestController { @GetMapping("/") public String getTestPage(@RequestParam("name") String name) { System.out.p.. 이전 1 2 3 4 5 ··· 15 다음