User 엔티티
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Builder
@Entity
@Table(name = "User")
public class User {
@Id
private String uid; // 아이디
private String pass; // 비밀번호
private String name; // 이름/회사명
private String email; // 이메일
private String hp; // 전화번호
private String role; // 역할(관리자, 유저, 판매자)
private String zip; // 우편번호
private String addr1; // 주소
private String addr2; // 자세한 주소
private String regip; // IP주소
private String state; // 상태(정상,중지,휴먼,탈퇴)
private String ssn; // 주민번호
@CreationTimestamp
private LocalDateTime regDate; // 가입일자
@CreationTimestamp
private LocalDateTime updateDate; // 변경 날짜(마이페이지)
private LocalDateTime leaveDate; // 탈퇴일자
@CreationTimestamp
private LocalDateTime lastLoginAt; // 최근 로그인 날짜
// OAuth 인증 업체 정보
private String provider;
@PrePersist
public void prePersist() {
if (this.role == null) {
this.role = "USER";
}
if (this.state == null) {
this.state = "정상";
}
}
}
설명
- @Id private String uid: 사용자의 고유 아이디(PK).
- private String pass, name, email, hp, zip, addr1, addr2, regip, ssn:
pass: 암호(해시화된 비밀번호 저장).
name: 사용자 이름 혹은 회사명.
email: 이메일 주소.
hp: 휴대폰 번호.
zip: 우편번호.
addr1, addr2: 주소 및 상세 주소.
regip: 가입 시 사용된 IP 주소.
ssn: 주민등록번호 (필요 시 사용).
- private String role, state, provider:
role: 사용자 권한(예: ADMIN, USER, SELLER).
state: 계정 상태(예: 정상, 중지, 휴먼, 탈퇴).
provider: OAuth 인증 제공자(Google, Kakao 등).
- @CreationTimestamp private LocalDateTime regDate, updateDate, lastLoginAt:
regDate: 회원 가입 시각을 자동으로 기록.
updateDate: 엔티티 업데이트 시각을 자동으로 기록(회원 정보 변경 등).
lastLoginAt: 마지막 로그인 시각을 자동으로 기록.
- private LocalDateTime leaveDate: 회원 탈퇴 일자 저장(탈퇴 시 직접 할당).
- @PrePersist public void prePersist():
- 엔티티가 최초 저장될 때(
persist) 실행.
role이 null일 경우 기본값 "USER"로 설정.
state가 null일 경우 기본값 "정상"으로 설정.