jpashop : member service

This commit is contained in:
kim
2021-01-24 16:13:32 +09:00
parent cb62ef3d8e
commit d3c1633ac9
2 changed files with 58 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
package com.example.jpashop.repository;
import com.example.jpashop.domain.Member;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
@@ -8,10 +9,15 @@ import javax.persistence.PersistenceContext;
import java.util.List;
@Repository
@RequiredArgsConstructor
public class MemberRepository {
@PersistenceContext
private EntityManager em;
// Spring data JPA 가 @Autowired 로 주입을 해주기 때문에 @RequiredArgsConstructor 사용가능 (생성자 주입)
// 기본적으로는 @PersistenceContext 사용
// @PersistenceContext
// private EntityManager em;
private final EntityManager em;
public void save(Member member){
em.persist(member);

View File

@@ -0,0 +1,50 @@
package com.example.jpashop.service;
import com.example.jpashop.domain.Member;
import com.example.jpashop.repository.MemberRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@Transactional(readOnly = true) // readOnly = true -> 조회의 경우 성능 최적화
@RequiredArgsConstructor
public class MemberService {
private final MemberRepository memberRepository;
// @Autowired
// public MemberService(MemberRepository memberRepository) {
// this.memberRepository = memberRepository;
// }
/**
* 회원 가입
*/
@Transactional
public Long join(Member member) {
validateDuplicateMember(member); // 중복 회원 검증
memberRepository.save(member) ;
return member.getId();
}
private void validateDuplicateMember(Member member) {
// Exception
List<Member> findMembers = memberRepository.findByName(member.getName());
if (!findMembers.isEmpty()) {
throw new IllegalStateException("이미 존재하는 회원입니다.");
}
}
// 전체회원 조회
public List<Member> findMembers() {
return memberRepository.findAll();
}
public Member findOne(Long memberId) {
return memberRepository.findOne(memberId);
}
}