[Spring JPA 실습 #4] 상품(Item) Repository 개발
- 📚 Spring/Spring JPA 실습
- 2021. 3. 6. 12:20
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);
}
}
'📚 Spring > Spring JPA 실습' 카테고리의 다른 글
[Spring JPA 실습 #6] 주문 서비스 개발 (0) | 2021.03.07 |
---|---|
[Spring JPA 실습 #5] 주문 주문상품 엔티티 개발 (0) | 2021.03.06 |
[Spring JPA 실습 #3] 회원 기능 테스트 (0) | 2021.03.05 |
[Spring JPA 실습 #2] 회원가입 Repository (0) | 2021.03.05 |
[Spring JPA 실습 #1] 실습을 위한 도메인 설계 및 정의 (0) | 2021.03.04 |