회원 서비스 개발

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 - 웹 애플리케이션 개발

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1/dashboard