상품 리포지토리 개발

기능 구현

  • 상품 등록, 상품 수정 : save(Item item) if(item.getId() == null) : JPA에 저장하기 전에는 id값이 없기 때문에 처음 생성하는 객체이면 일단 DB에 item 저장한다.(영속성 컨텍스트에 등록 em.persist(item) ) else : id 가 있으면 이미 데이터베이스에 저장된 엔티티를 수정한다고 보고, merge() 를 실행!

    public void save(Item item){
            //JPA에 저장하기 전까지는 id값이 없다.새로 생성하는 객체라는 뜻
            if(item.getId() == null){//처음에는 id라는 게 없기 때문에.
                em.persist(item);
            } else{//이미 DB에 등록된 것이라는 뜻.
                em.merge(item);
            }
        }
  • 상품 조회 findOne(Long id) : EntityManager.find(Item.class,id) 이용 findAll() : 쿼리문 작성, getResultList()로 리스트 반환

package jpabook.jpashop.repository;

import jpabook.jpashop.domain.Item.Item;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;

import javax.persistence.EntityManager;
import java.util.List;

@Repository
@RequiredArgsConstructor
public class ItemRepository {
    private final EntityManager em;

    public void save(Item item){
        //JPA에 저장하기 전까지는 id값이 없다.새로 생성하는 객체라는 뜻
        if(item.getId() == null){//처음에는 id라는 게 없기 때문에.
            em.persist(item);
        } else{//이미 DB에 등록된 것이라는 뜻.
            em.merge(item);
        }
    }
    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();
    }
}

Last updated