|
3 | 3 | import jakarta.persistence.*; |
4 | 4 | import lombok.Builder; |
5 | 5 | import lombok.Getter; |
| 6 | +import lombok.NoArgsConstructor; |
6 | 7 | import lombok.Setter; |
7 | 8 | import org.tuna.zoopzoop.backend.domain.archive.archive.entity.PersonalArchive; |
8 | 9 | import org.tuna.zoopzoop.backend.domain.space.membership.entity.MemberShip; |
|
13 | 14 | @Setter |
14 | 15 | @Getter |
15 | 16 | @Entity |
| 17 | +@NoArgsConstructor |
16 | 18 | public class Member extends BaseEntity { |
17 | | - //사용자 이름 |
18 | | - //UNIQUE 해야 하나? |
| 19 | + //---------- 필드 ----------// |
19 | 20 | @Column(unique = true, nullable = false) |
20 | 21 | private String name; |
21 | 22 |
|
22 | | - //사용자 이메일 |
23 | | - //검색 조건으로 사용할 것이므로, UNIQUE 해야함. |
24 | 23 | @Column(unique = true, nullable = false) |
25 | 24 | private String email; |
26 | 25 |
|
27 | | - //사용자 프로필 이미지 URL |
28 | 26 | @Column |
29 | 27 | private String profileImageUrl; |
30 | 28 |
|
31 | | - //soft-delete 용 status |
32 | | - //default = true; |
33 | 29 | @Column |
34 | | - private Boolean active; |
| 30 | + private Boolean active; //soft-delete 용 status, default = true; |
35 | 31 |
|
| 32 | + //---------- 연관 관계 ----------// |
36 | 33 | @OneToOne(mappedBy = "member", cascade = CascadeType.ALL, orphanRemoval = true) |
37 | | - private PersonalArchive personalArchive; |
| 34 | + private PersonalArchive personalArchive; //PersonalArchive(Archive 매핑 테이블), 1:1 관계, cascade.all |
38 | 35 |
|
39 | | - //연결된 MemberShip |
40 | | - //Space 삭제시 cascade.all |
41 | 36 | @OneToMany(mappedBy = "member", cascade = CascadeType.ALL, orphanRemoval = true) |
42 | | - private List<MemberShip> memberShips; |
| 37 | + private List<MemberShip> memberShips; //MemberShip, 1:N 관계, cascade.all |
43 | 38 |
|
44 | | - public Member() { |
45 | | - this.personalArchive = new PersonalArchive(this); |
46 | | - } |
47 | | - |
48 | | - /** |
49 | | - * Member 엔티티 빌더 |
50 | | - * |
51 | | - * @param name 사용자 이름 |
52 | | - * @param email 사용자 이메일 |
53 | | - * @param profileImageUrl 사용자 프로필 이미지 URL |
54 | | - */ |
55 | | - //이런 형식으로 작성해주시면 됩니다. |
56 | | - //물론 지금처럼 코드가 직관적인 경우에는, 굳이 작성 하실 필요 없습니다. |
57 | | - //해당 방식으로 작성하실 경우, 도구 -> javadoc 생성을 통해 자동 문서화가 가능합니다. |
58 | | - //추가로 @return과 같은 어노테이션도 사용이 가능합니다. |
| 39 | + //---------- 생성자 ----------// |
59 | 40 | @Builder |
60 | 41 | public Member(String name, String email, String profileImageUrl) { |
61 | 42 | this.name = name; |
62 | 43 | this.email = email; |
63 | 44 | this.profileImageUrl = profileImageUrl; |
64 | | - this.personalArchive = new PersonalArchive(this); |
| 45 | + this.active = true; |
| 46 | + this.personalArchive = new PersonalArchive(this); //Member 객체 생성 시 PersonalArchive 자동 생성. |
| 47 | + } |
| 48 | + |
| 49 | + //---------- 메소드 ----------// |
| 50 | + public void updateName(String name) { //사용자 이름 수정 |
| 51 | + this.name = name; |
| 52 | + } |
| 53 | + |
| 54 | + public void deactivate() { //사용자 비활성화(=soft-delete) |
| 55 | + this.active = false; |
65 | 56 | } |
66 | 57 | } |
0 commit comments