UserDetails 엔티티
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Builder
@Entity
@Table(name = "UserDetails")
public class UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String no; // UserDetails 고유 번호
private int userPoint; // 사용자의 보유 포인트
@Column(name = "`rank`")
private String rank; // 회원 등급 (FAMILY, SILVER, GOLD, VIP, VVIP 등)
private String gender; // 성별 정보 (남, 여 등)
private String content; // 추가 회원 정보 (소개글 등)
@OneToOne
@JoinColumn(name="uid")
private User user; // 연관된 User 엔티티 (1:1 매핑)
@PrePersist
public void prePersist() {
// 회원 정보 저장 직전에 content가 비어 있으면 기본값 설정
if (this.content == null) {
this.content = "없음";
}
// 회원 정보 저장 직전에 rank가 비어 있으면 기본 등급 설정
if (this.rank == null) {
this.rank = "FAMILY";
}
}
}
설명
- @Entity, @Table(name = "UserDetails"): JPA 엔티티로 매핑되며, 테이블 이름을
UserDetails로 지정.
- @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private String no:
UserDetails 테이블의 기본 키(PK)로, 자동 증가 전략 사용.
- private int userPoint: 사용자가 보유하고 있는 포인트를 저장.
- @Column(name = "
rank") private String rank:
rank는 컬럼명이 SQL 예약어이므로 백틱(```)으로 감싸서 매핑.
- 회원 등급 정보(FAMILY, SILVER, GOLD, VIP, VVIP 등)를 저장.
- private String gender: 회원의 성별 정보를 저장.
- private String content: 회원의 추가 정보(소개글, 코멘트 등)를 저장.
- @OneToOne @JoinColumn(name="uid") private User user:
UserDetails 엔티티와 User 엔티티가 1:1 관계를 맺음.
uid 컬럼을 외래 키로 사용하여 연결.
- @PrePersist public void prePersist():
- 엔티티가 최초 저장될 때(
persist) 실행되는 콜백 메서드.
content가 null이면 기본값 "없음"으로 설정.
rank가 null이면 기본 등급 "FAMILY"으로 설정.
- @Data, @Builder, @NoArgsConstructor, @AllArgsConstructor, @ToString (Lombok 어노테이션):
@Data: 게터/세터, equals(), hashCode(), toString() 생성.
@Builder: 빌더 패턴으로 객체 생성 지원.
@NoArgsConstructor, @AllArgsConstructor: 매개변수 없는 생성자와 모든 필드를 매개변수로 받는 생성자 자동 생성.
@ToString: 모든 필드를 포함한 toString() 메서드 생성.