뛰슈 - Memeber정의

2023. 8. 10. 21:16·LikeLion🦁
728x90

뛰슈의 멤버들을 관리하기 위해서 member 엔티티를 정의하였다.

JPA를 활용하여 데이터베이스를 관리하기 위해서 아래처럼 정의하였다.

@Getter
@Builder
@Entity
@AllArgsConstructor
@NoArgsConstructor
public class Member {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotEmpty
    @Column(length = 30)
    private String memberId;

    @Column(length = 10)
    private String name;
    private String password;
}

 

JPA사용을 위한 Repository를 지정

@Repository
public interface MemberJpaRepository extends JpaRepository<Member,Long> {

    Optional<Member>findMemberByMemberId(String memberId);
    Optional<Member>findMemberById(Long id);
}

 

Member를 저장하고, 찾고, 저장전 검증하기 위한 서비스 로직이다.

@Slf4j
@Service
public class MemberService {

    private final MemberJpaRepository memberJpaRepository;//멤버 저장소

    private static final String EMAIL_PATTERN = "^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$";
    private static final Pattern pattern = Pattern.compile(EMAIL_PATTERN);
    @Autowired
    public MemberService(MemberJpaRepository memberJpaRepository) {
        this.memberJpaRepository = memberJpaRepository;
    }

    public SignUpResult save(SignUpDto memberDto){

        if(memberJpaRepository.findMemberByMemberId(memberDto.getMemberId()).isPresent()){
            return new SignUpResult("duplicatedId");
        }
        if(!isValidEmail(memberDto.getMemberId())){
            return new SignUpResult("idValidation");
        }
        if(!memberDto.getPassWord().equals(memberDto.getCheckPassWord())){
            return new SignUpResult("pwValidation");
        }

        Optional<Member> member = Optional.of(memberJpaRepository.save(Member.builder()
                .memberId(memberDto.getMemberId())
                .name(memberDto.getName())
                .password(memberDto.getPassWord())
                .build()));
        log.info("멤버 저장 됨 {}",member.get().getId());

        return new SignUpResult("true");
    }

    public Optional<Member> findById(Long id){
        return memberJpaRepository.findMemberById(id);
    }

    public Optional<Member> findByName(String name){
        return memberJpaRepository.findMemberByMemberId(name);
    }

    public boolean isValidEmail(String email) {
        Matcher matcher = pattern.matcher(email);
        return matcher.matches();
    }

}

DTO 정의

Member 데이터에 직접적인 접근을 제한하기 위해서 정의하였다.

@Data
public class MemberDto {
    Long id;
    String name;
}
@Data
public class SignUpDto {

    @NotEmpty
    @Size(max = 30)
    @Pattern(regexp = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}$", message = "이메일 형식에 맞지 않습니다.")
    private String memberId;

    @NotEmpty
    @Size(min = 5, message = "비밀번호는 최소 5자 이상이어야 합니다.")
    private String passWord;

    @NotEmpty
    @Size(min = 5, message = "비밀번호는 최소 5자 이상이어야 합니다.")
    private String checkPassWord;

    @NotEmpty
    @Size(max = 10)
    private String name;
}
@Data
public class LoginDto {

    @NotEmpty
    @Size(max = 50)
    @Pattern(regexp = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}$", message = "이메일 형식에 맞지 않습니다.")
    String memberId;

    @NotEmpty
    @Size(min = 5, message = "비밀번호는 최소 5자 이상이어야 합니다.")
    String password;

}
728x90

'LikeLion🦁' 카테고리의 다른 글

뛰슈 - Board관리  (1) 2023.08.17
뛰슈 - LoginService  (0) 2023.08.14
떠나요~ 대천으로🏖️  (3) 2023.08.01
뛰슈 - 기능명세서 작성하기  (1) 2023.07.28
사자가 된 감자 5주차  (0) 2023.05.22
'LikeLion🦁' 카테고리의 다른 글
  • 뛰슈 - Board관리
  • 뛰슈 - LoginService
  • 떠나요~ 대천으로🏖️
  • 뛰슈 - 기능명세서 작성하기
Bello's
Bello's
개발하는 벨로
  • Bello's
    벨로의 개발일지
    Bello's
  • 전체
    오늘
    어제
    • 분류 전체보기 (199) N
      • 노예 일지 (7)
        • 스타트업 노예일지 (3)
      • CS 이론 (81)
        • 학과 수업 (4)
        • 알고리즘 (64)
        • 시스템 프로그래밍 (3)
        • 데이터 통신 (1)
        • 운영체제 (2)
        • 데이터베이스 (1)
      • project (3)
      • 나는 감자다. (4)
      • Spring (27)
      • 모각코 (45)
        • 절개와지조(모각코) (7)
        • 어쩌다보니 박준태가 조장이조 (11)
        • 어쩌다보니 박준태가 또 조장이조 (12)
      • LikeLion🦁 (20)
      • 캘리포니아 감자 (4)
      • OpenSource Contribute (1)
      • 우아한테크벨로 (1) N
        • 프리코스 회고록 (6) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    누적합
    DFS
    회고록
    오블완
    자바
    프리코스
    JPA
    나는 감자
    어렵다
    8기
    절개와지조
    BFS
    티스토리챌린지
    모각코
    Spring
    뛰슈
    그래프 순회
    백준
    감자
    타임리프
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Bello's
뛰슈 - Memeber정의
상단으로

티스토리툴바