jpashop : data jpa

This commit is contained in:
kim
2021-01-28 16:18:21 +09:00
parent b466b73105
commit 7426896698
5 changed files with 53 additions and 46 deletions

View File

@@ -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<Member, Long> {
// 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<Member> findAll() {
return em.createQuery("select m from Member m", Member.class)
.getResultList();
}
public List<Member> 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<Member> findByName(String name);
}

View File

@@ -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<Member> findAll() {
return em.createQuery("select m from Member m", Member.class)
.getResultList();
}
public List<Member> findByName(String name) {
return em.createQuery("select m from Member m where m.name = :name", Member.class)
.setParameter("name", name)
.getResultList();
}
}

View File

@@ -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());
}
}

View File

@@ -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);
// 배송정보 생성성

View File

@@ -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)