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;
//...1
private void save(Item item) {
if (item.getId() == null) {
em.persist(item);
} else {
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();
}
}
Item은 처음에 저장할 때 id가 존재하지 않습니다. 그래서 신규로 보고 JPA가 제공하는 persist를 사용해서 등록합니다.
그게 아니라면 JPA를 통해서 DB에 들어갔다는 것이므로 merge를 사용합니다.
update 비슷한 것인데 자세한 내용은 뒤에 웹에서 설명하겠습니다. (그냥 지금은 저장한다 정도로 생각합시다)