From 74268966986974f3e78007c50195c133ec9655bd Mon Sep 17 00:00:00 2001 From: kim Date: Thu, 28 Jan 2021 16:18:21 +0900 Subject: [PATCH] jpashop : data jpa --- .../jpashop/repository/MemberRepository.java | 36 ++--------------- .../repository/MemberRepositoryOld.java | 40 +++++++++++++++++++ .../jpashop/service/MemberService.java | 6 +-- .../example/jpashop/service/OrderService.java | 7 +--- .../jpashop/service/MemberServiceTest.java | 10 ++--- 5 files changed, 53 insertions(+), 46 deletions(-) create mode 100644 jpashop/src/main/java/com/example/jpashop/repository/MemberRepositoryOld.java diff --git a/jpashop/src/main/java/com/example/jpashop/repository/MemberRepository.java b/jpashop/src/main/java/com/example/jpashop/repository/MemberRepository.java index 9a9d2cfb..42aa617d 100644 --- a/jpashop/src/main/java/com/example/jpashop/repository/MemberRepository.java +++ b/jpashop/src/main/java/com/example/jpashop/repository/MemberRepository.java @@ -1,40 +1,12 @@ package com.example.jpashop.repository; import com.example.jpashop.domain.Member; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Repository; +import org.springframework.data.jpa.repository.JpaRepository; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import java.util.List; -@Repository -@RequiredArgsConstructor -public class MemberRepository { +public interface MemberRepository extends JpaRepository { -// Spring data JPA 가 @Autowired 로 주입을 해주기 때문에 @RequiredArgsConstructor 사용가능 (생성자 주입) -// 기본적으로는 @PersistenceContext 사용 -// @PersistenceContext -// private EntityManager em; - - private final EntityManager em; - - public void save(Member member){ - em.persist(member); - } - - public Member findOne(Long id) { - return em.find(Member.class, id); - } - - public List findAll() { - return em.createQuery("select m from Member m", Member.class) - .getResultList(); - } - - public List findByName(String name) { - return em.createQuery("select m from Member m where m.name = :name", Member.class) - .setParameter("name", name) - .getResultList(); - } + // select m from Member m where m.name = ? + List findByName(String name); } diff --git a/jpashop/src/main/java/com/example/jpashop/repository/MemberRepositoryOld.java b/jpashop/src/main/java/com/example/jpashop/repository/MemberRepositoryOld.java new file mode 100644 index 00000000..d49d36ee --- /dev/null +++ b/jpashop/src/main/java/com/example/jpashop/repository/MemberRepositoryOld.java @@ -0,0 +1,40 @@ +package com.example.jpashop.repository; + +import com.example.jpashop.domain.Member; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import java.util.List; + +@Repository +@RequiredArgsConstructor +public class MemberRepositoryOld { + +// Spring data JPA 가 @Autowired 로 주입을 해주기 때문에 @RequiredArgsConstructor 사용가능 (생성자 주입) +// 기본적으로는 @PersistenceContext 사용 +// @PersistenceContext +// private EntityManager em; + + private final EntityManager em; + + public void save(Member member){ + em.persist(member); + } + + public Member findOne(Long id) { + return em.find(Member.class, id); + } + + public List findAll() { + return em.createQuery("select m from Member m", Member.class) + .getResultList(); + } + + public List findByName(String name) { + return em.createQuery("select m from Member m where m.name = :name", Member.class) + .setParameter("name", name) + .getResultList(); + } +} diff --git a/jpashop/src/main/java/com/example/jpashop/service/MemberService.java b/jpashop/src/main/java/com/example/jpashop/service/MemberService.java index 152de291..d7c27813 100644 --- a/jpashop/src/main/java/com/example/jpashop/service/MemberService.java +++ b/jpashop/src/main/java/com/example/jpashop/service/MemberService.java @@ -3,8 +3,8 @@ package com.example.jpashop.service; import com.example.jpashop.api.updateMemberRequest; import com.example.jpashop.domain.Member; import com.example.jpashop.repository.MemberRepository; +import com.example.jpashop.repository.MemberRepositoryOld; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -46,13 +46,13 @@ public class MemberService { } public Member findOne(Long memberId) { - return memberRepository.findOne(memberId); + return memberRepository.findById(memberId).get(); } @Transactional public void update(Long id, updateMemberRequest request) { - Member member = memberRepository.findOne(id); + Member member = memberRepository.findById(id).get(); member.setName(request.getName()); } } diff --git a/jpashop/src/main/java/com/example/jpashop/service/OrderService.java b/jpashop/src/main/java/com/example/jpashop/service/OrderService.java index 7f81564e..71273af7 100644 --- a/jpashop/src/main/java/com/example/jpashop/service/OrderService.java +++ b/jpashop/src/main/java/com/example/jpashop/service/OrderService.java @@ -5,10 +5,7 @@ import com.example.jpashop.domain.Member; import com.example.jpashop.domain.Order; import com.example.jpashop.domain.OrderItem; import com.example.jpashop.domain.item.Item; -import com.example.jpashop.repository.ItemRepository; -import com.example.jpashop.repository.MemberRepository; -import com.example.jpashop.repository.OrderRepository; -import com.example.jpashop.repository.OrderSearch; +import com.example.jpashop.repository.*; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,7 +28,7 @@ public class OrderService { public Long order(Long memberId, Long itemId, int count) { // 엔티티 조회 - Member member = memberRepository.findOne(memberId); + Member member = memberRepository.findById(memberId).get(); Item item = itemRepository.findOne(itemId); // 배송정보 생성성 diff --git a/jpashop/src/test/java/com/example/jpashop/service/MemberServiceTest.java b/jpashop/src/test/java/com/example/jpashop/service/MemberServiceTest.java index c4e09db2..7720b742 100644 --- a/jpashop/src/test/java/com/example/jpashop/service/MemberServiceTest.java +++ b/jpashop/src/test/java/com/example/jpashop/service/MemberServiceTest.java @@ -1,17 +1,14 @@ package com.example.jpashop.service; import com.example.jpashop.domain.Member; -import com.example.jpashop.repository.MemberRepository; +import com.example.jpashop.repository.MemberRepositoryOld; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; -import javax.persistence.EntityManager; - import static org.junit.Assert.*; @RunWith(SpringRunner.class) @@ -20,7 +17,8 @@ import static org.junit.Assert.*; public class MemberServiceTest { @Autowired MemberService memberService; - @Autowired MemberRepository memberRepository; + @Autowired + MemberRepositoryOld memberRepositoryOld; // @Autowired EntityManager em; @Test @@ -34,7 +32,7 @@ public class MemberServiceTest { // then // em.flush(); - assertEquals(member, memberRepository.findOne(savedId)); + assertEquals(member, memberRepositoryOld.findOne(savedId)); } @Test(expected = IllegalStateException.class)