☁️ 토이 프로젝트 개발일지
개발동아리에서 토이 프로젝트로 회원가입, 회원정보 변경, 회원탈퇴 등의 기능을 담당하게 되었다! 내가 담당한 부분을 개발한 기록을 해보려고 한다 😀
import jakarta.persistence.*;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;
import java.time.LocalDateTime;
import java.util.Objects;
@Entity
@Table(name = "User")
@NoArgsConstructor
@Getter
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
private String email;
@NotNull
private String password;
@Size(min = 2, max = 8)
@NotNull
private String nickname;
@Size(max = 11)
@NotNull
private String phone;
@CreationTimestamp
private LocalDateTime created_at;
@Builder
public UserEntity(String email, String password, String nickname, String phone) {
this.email = email;
this.password = password;
this.nickname = nickname;
this.phone = phone;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (!(obj instanceof UserEntity userEntity)) return false;
return Objects.equals(this.email, userEntity.getEmail()) &&
Objects.equals(this.nickname, userEntity.getNickname());
}
@Override
public int hashCode() {
return Objects.hash(email, nickname);
}
먼저 User table엔 기본적으로 email,password,nickname,phone 등의 필드가 있다.
닉네임과 전화번호는 @Size
어노테이션을 사용해서 글자수 제한을 설정한다.
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface UserRepository extends JpaRepository<UserEntity,Long> {
Optional<UserEntity> findByEmail(String email);
Optional<UserEntity> findByNickname(String nickname);
}
다음으로 UserRepository이다.
JpaRepository<EntityType,PK type>를 상속받아 기본적인 CRUD 기능을 사용할 수 있도록한다.
추후 회원가입 과정에서 이미 존재하는 이메일인지, 이미 존재하는 닉네임인지 중복확인을 하기 위해서 findByEmail , findByNickname을 만들어준다.
그리고 이러한 findByEmail , findByNickname의 리턴값은 있을수도 있고 없을수도 있음으로(존재하지않는 이메일, 존재하지 않는 닉네임인 경우) Optional로 설정했다.