회원 서비스 개발
2023. 5. 10. 07:59ㆍ카테고리 없음
package jpabook.jpashop.service;
import jpabook.jpashop.domain.Member;
import jpabook.jpashop.repository.MemberRepository;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@Transactional(readOnly = true)
//@AllArgsConstructor 필드에 잇는 모든걸 가지고 생성자를 만들어주는 것.
@RequiredArgsConstructor
// final이 있는 필드만 가지고 생성자 함수를 만들어줌. 자체로 만들어주니 얘가 내장되어서 생성자가 안보임.
public class MemberService {
private final MemberRepository memberRepository;
/**
* 회원가입
*/
@Transactional //변경
//@Transactional 데이터 변경 불가
public Long join(Member member) {
validateDuplicateMember(member); //중복 회원 검증
memberRepository.save(member);
return member.getId();
}
private void validateDuplicateMember(Member member) {
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);
}
}
출처 : 인프런 강의: 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발