본문 바로가기

Dot Programming/Spring Clone

[스프링 웹앱 프로젝트 #2]계정 도메인 생성

Accont 도메인 클래스
Account 도메인에 필요한 데이터
> 로그인
> 프로필
> 알림설정

1인 개발이기 때문에 monolithic한 app개발을 할 예정
팀 단위가 되면은 모듈화를 이루어주어야함

 

도메인 작성

의존성에 Spring Security를 주입하였으면 기본적으로 로그인 페이지를 제공한다.

localhost:8080/login

 

 

설정을 하지 않았으면 초기 값은 id : user / pw는 아래와 같이 앱을 실행할 때 마다 새로운 값을 준다

 

 

@EqualsAndHashCode(of ="id")

id만 사용하는 이유

연관관계가 복잡해질 때 @EqualsAndHashCode에서 서로 다른 연관관계를 계속해서 순환참조하느라 무한 루프가 발생하고 결국에는 Stackoverflow가 발생할 수 있기 때문에 id만 사용

 

 

Account 도메인

@Entity
@Getter @Setter
@EqualsAndHashCode(of ="id")
@Builder @AllArgsConstructor @NoArgsConstructor
public class Account {

    @Id
    @GeneratedValue
    private Long id;

    // email, nickname은 중복이 되지 않으므로 unique해야 함
    @Column(unique = true)
    private String email;

    @Column(unique = true)
    private String nickname;

    private String password;

    private boolean emailVerified;

    private String emailCheckToken;

    private LocalDateTime joinedAt;

    private String bio;

    private String url;

    private String occupation;

    private String location;

//  varchar(255)보다 더 길어질 수 있을 때 @Lob -> text type에 매핑 시켜줌
//  profile image는 user을 로딩 할 떄 종종 같이 쓰일 것이기 때문에 fetch모드로 가져오는게 좋음
    @Lob @Basic(fetch = FetchType.EAGER)
    private String profileImage;


//  알림
    private boolean studyCreatedByEmail;
    private boolean studyCreatedByWeb;
    private boolean studyEnrollmentResultByEmail;
    private boolean studyEnrollmentResultByWeb;
    private boolean studyUpdatedByEmail;
    private boolean studyUpdatedByWeb;
    

}

 


참고

인프런 강의 - 스프링과 JPA 기반 웹 애플리케이션 개발