출처 :
www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-JPA-%EC%9B%B9%EC%95%B1/dashboard
3. Account 도메인 클래스
Account 도메인에 필요한 데이터
- 로그인
- 프로필
- 알림 설정
Lombok 어노테이션
@Getter @Setter @EqualsAndHashCode(of = "id")
@Builder @AllArgsConstructor @NoArgsConstructor
id만 사용하는 이유 => 연관관계가 복잡해질때 @EqualsAndHashCode(of = "id")에서
서로다른 연관관계를 계속해서 순환참조하느라 무한 루프 -> StackOverFlow가 발생할 수 있다.
package com.studyolle.domain;
import lombok.*;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
@Getter @Setter @EqualsAndHashCode(of = "id")
@Builder @AllArgsConstructor @NoArgsConstructor
public class Account {
// ---- 로그인 ----
@Id
@GeneratedValue
private Long id;
@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; // 웹사이트 url
private String occupation; // 직업
private String location; // 지역 varchar(255)
@Lob
@Basic(fetch = FetchType.EAGER)
private String profileImage; // 프로필 이미지
// varchar(255)보다 클 수 있음 -> Lob을 이용해 text타입으로 매칭
// fetch타입이 그때 그때 바뀔 수 있기 때문에 명시적으로 선언
// ---- 알림 설정 ----
private boolean studyCreatedByEmail;
private boolean studyCreateByWeb;
private boolean studyEnrollmentResultByEmail;
private boolean studyEnrollmentResultByWeb;
private boolean studyUpdatedByEmail;
private boolean studyUpdateByWeb;
}
'프로젝트 정리 > 스프링과 JPA 기반 웹 애플리케이션 개발' 카테고리의 다른 글
5. 회원가입 뷰 (0) | 2021.02.16 |
---|---|
4. 회원가입 컨트롤러 (0) | 2021.02.15 |
자바 환경변수 java -version javac -version 다를때 (0) | 2021.02.11 |
2. 프로젝트 만들기 (0) | 2021.02.11 |
1부 - 계정 관리 (0) | 2021.02.11 |