관심쟁이 영호

[#10] 스프링 부트 ㅣ Spring Boot ㅣ 상품 도메인 개발 본문

Bank-End/인프런- Spring 공부

[#10] 스프링 부트 ㅣ Spring Boot ㅣ 상품 도메인 개발

관심쟁이 영호 2021. 4. 14. 01:20
반응형

이전 포스팅에서는 회원 도메인을 완성했고, 테스트까지 완료했다.

이번 포스팅에서는 상품 도메인을 할 예정이다.

 

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() == null){ //처음에는 id가 없기 때문에 설정해주어야한다.
            em.persist(item);
        }else {
            em.merge(item); //있을 경우에는 merge를 통해서 업데이트와 비슷하게 해준다.
        }
    }

    public Item findOne(Long id){
        return em.find(Item.class, id);
    }

    public List<Item> findAll(){
        return em.createQuery("select i from Item i", Item.class).getResultList();
    }
}

- 여기서 item은 맨처음 생성될 때, 이름이 설정되어 있지 않다. 그래서 null체크를 하여 null일 경우 새로 생성, null이 아닐 경우 업데이트 형식으로 해주면 된다.

 

새로 생성과 업데이트 형식을 도와주는 것이 "persist, merge"이다.

 

(2) ItemService 생성

 

// ItemService.class

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class ItemService {

    private final ItemRepository itemRepository;

    @Transactional
    public void saveItem(Item item){
        itemRepository.save(item);
    }

    public List<Item> findItem(){
        return itemRepository.findAll();
    }

    public Item findOne(Long itemId){
        return itemRepository.findOne(itemId);
    }
}

- 이전에 만들었던 MemberService와 비슷하게 만들면 된다.

 

본 강의는 인프런의 김영한 개발자님이 강의하고 계신

"실전! 스프링 부트와 JPA활용1 - 웹 애플리케이션 개발"을 수강하면서 정리한 글입니다.

300x250
Comments