jpashop : member service
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user