스프링 부트와 JPA 활용1 - 상품 도메인 개발 2
11678 단어 SpringbootJPAJPA
📌 스프링 부트와 JPA 활용1 - 상품 도메인 개발 2
인프런 - 스프링 부트와 JPA 활용1 by 김영한 을 기반으로 작성된 글입니다.
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 도메인 개발 목차
1. 상품 엔티티 개발(비즈니스 로직 추가)
2. 상품 리포지토리 개발
3. 상품 서비스 개발
구현 기능
- 상품 등록
- 상품 목록 조회
- 상품 수정
2. 상품 리포지토리 개발
1) 상품 리포지토리 (ItemRepository.java)
💻 코드
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){
//em.persitst - 신규 등록
if (item.getId() == null){
em.persist(item);
} else{
//update
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();
}
}
📍 기능 설명
1) 기능
- save()
- em.persist() - 신규 등록
Item은 JPA에 저장하기 전까지 id 값이 없다 👉 새로 생성한 객체라는 뜻 - em.merge() - 이미 DB에 저장된 데이터 update 한다는 뜻으로 간단히 생각
- em.persist() - 신규 등록
3. 상품 서비스 개발
2) 상품 서비스 (ItemService.java)
상품 리포지토리에 단순히 위임만 하는 클래스
💻 코드
package jpabook.jpashop.service;
import jpabook.jpashop.domain.item.Item;
import jpabook.jpashop.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
public void saveItem(Item item){
itemRepository.save(item);
}
/*상품 조회*/
public Item findOne(Long itemId){
return itemRepository.findOne(itemId);
}
public List<Item> findItems(){
return itemRepository.findAll();
}
}
📍 설명
1) 기술
- saveItem() 의
@Transactional
: 전체 코드가@Transactional(readOnly = true)
이기 때문에
item을 저장해야 하는 메서드인 saveItem()이 DB 에 저장이 안된다.
메서드에 가까이 있는 어노테이션이 우선권을 가지기 때문에
메서드 위에@Transactional
을 작성하여 오버라이딩 했다.
Author And Source
이 문제에 관하여(스프링 부트와 JPA 활용1 - 상품 도메인 개발 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@joajoa/스프링-부트와-JPA-활용1-상품-도메인-개발-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)