[Spring JPA 실습 #4] 상품(Item) Repository 개발

ItemRepository

package com.jpabook.repository;

import com.jpabook.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) {
        if(item.getId() == null) {
            em.persist(item);
        }else{
            em.merge(item); // 강제로 업데이트
        }
    }

    // 1건 검색
    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) //JPQL
                .getResultList();
    }

}

 

service

package com.jpabook.service;


import com.jpabook.domain.item.Item;
import com.jpabook.repository.ItemRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

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

    private final ItemRepository itemRepository;

    @Transactional //true이면 저장안된다.
    public void saveItem(Item item) {
        itemRepository.save(item);
    }

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

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

댓글

Designed by JB FACTORY