목록Bank-End/인프런- Spring 공부 (26)
관심쟁이 영호

이전 포스팅에서는 회원 도메인을 완성했고, 테스트까지 완료했다. 이번 포스팅에서는 상품 도메인을 할 예정이다. 1. 상품 도메인 기능 및 개발 순서 (1) 기능 - 상품 등록 - 상품 목록 조회 - 상품 수정 (2) 순서 상품 엔티티 개발(비즈니스 로직 추가) -> 상품 리포지토리 개발 -> 상품 서비스 개발, 상품 기능 테스트 이렇게 될 예정이다. 2. 구현 시작. (1) ItemRepository 생성 // ItemRepository.class @Repository @RequiredArgsConstructor public class ItemRepository { private final EntityManager em; public void save(Item item){ if(item.getId() =..

1. 테스트 코드로 살펴볼 점 - 회원가입 성공 - 회원가입 중복이 예외처리 되는지. 바로 코드로 살펴보자. 2. MemberService에서 ctrl + shift + T 입력하고 코드를 작성해준다. //MemberServiceTest package jpashop.jpashop.service; import jpashop.jpashop.domain.Item.Member; import jpashop.jpashop.repository.MemberRepository; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.co..

아키텍처를 살펴보면 Controller와 Repository를 연결해주는 Service가 필요하다. 1. Service Pakage를 생성한다. 코드를 입력해준다. // MemberService.class //Repository와 똑같이 @Conponent를 가지고 있다. 똑같이 spring Component scan 단계를 거치도록 하기 위함인 듯 하다. @Service @Transactional(readOnly = true) //데이터 변경은 기본적으로 트랜잭션안에 있어야 한다. @RequiredArgsConstructor // 자동 주입 public class MemberService { //@Autowird를 추가한다면, //EntityManager의 @PersistenceContext와 똑같이 ..

지금부터는 어플리케이션을 만들어 볼 예정이다. 만들기에 앞서서, 어플리케이션을 어떤식으로 운용할지 아키텍처를 구상해야한다. 일반적으로 많이사용하는 형식으로 할것이다. 아키텍쳐를 전반적으로 설명하는 아래 그림을 살펴보자! 1. 계층형 구조 - controller, web : 웹 계층이다. - service : 비즈니스 로직, 트랜잭션 처리를 한다. - repository: JPA를 직접 사용하는 계층이다. 엔티티 매니저를 사용한다. - domain : 엔티티가 모여 있는 계층이다. 모든 계층에서 가용된다. 2. 패키지 구조 jpabook.jpashop - domain - exception - repository - service - web 3. 순서 - 서비스, 리포지토리 계층 개발 -> 테스트 케이스 작..

1. Getter와 Setter 실무에서는 Getter를 이용하여 데이터 조회를 하는 경우가 상당히 많다. 그래서 Getter를 열어두지 않으면 많이 힘들다. 그래서 열어두는 것이 좋다. 반면에, Setter는 데이터를 잘못 바꾸는 경우가 있어서 열어두었다가 어느 부분에서 어떻게 데이터가 업데이트 되었는지 파악하기가 힘든 경우가 있다. 그래서 꼭 필요한 경우가 아니라면 Setter를 닫아두는 것을 추천하신다. -> 변경전용 비지니스 메서드가 필요하다. 2. 엔티티 식별자 엔티티의 식별자는 id, PK 컬럼명은 member_id를 사용해주는 이유는, 엔티티는 타입이 있어서 id필드 만으로 쉽게 구분할 수 있지만, 테이블은 타입이 없다. 그래서 구분이 상당히 힘들다. 그리고 관례상 테이블은 테이블명 + id..

이제 카테고리 엔티티 클래스를 작성할 차례이다. 1. 카테고리 작성 @Entity @Getter @Setter public class Category { @Id @GeneratedValue @Column(name = "category_id") private Long id; private String name; @ManyToMany @JoinTable(name = "category_item",// 다대다 관계에서는 중간 테이블을 통해서 매칭시켜주어야한다. joinColumns = @JoinColumn(name = "category_id"), //중간 테이블에 있는 아이템 inverseJoinColumns = @JoinColumn(name = "item_id")) // 거기에 있는 item으로 들어가는 것 ..