2026. 6. 4. 19:34ㆍ프로젝트/Trip-Linker 팀 프로젝트
User.java — updateNickname·withdraw 메서드 추가
📋 한줄 요약
User.java에 닉네임 변경(updateNickname)과 회원 탈퇴(withdraw) 메서드를 추가했다.
같은 날 만든 UserServiceImpl이 이 메서드를 호출하기 때문에 함께 작업했다.
🎯 왜 만들었나
UserServiceImpl에서 user.updateNickname(), user.withdraw()를 호출하는데
User 엔티티에 해당 메서드가 없어서 컴파일 에러가 났다.
Entity에 메서드를 추가해서 Service에서 필드를 직접 건드리지 않도록 했다.
📁 작업 순서 (파일별)
1. User.java — 메서드 2개 추가
📦 domain/user/entity
추가한 코드
// 닉네임 변경
public void updateNickname(String newName) {
if (newName == null || newName.trim().isEmpty()) {
throw new IllegalArgumentException("올바른 닉네임을 입력해주세요.");
}
this.name = newName;
}
// 회원 탈퇴
public void withdraw() {
this.status = "DELETED";
this.deletedAt = LocalDateTime.now();
}
updateNickname 에 검증 로직을 넣은 이유
null이나 공백만 있는 이름은 의미가 없다.
Service에서 체크할 수도 있지만, 이 규칙은 User 도메인의 불변 조건이므로 Entity 안에 넣었다.
어디서 호출하든 항상 검증이 보장된다.
withdraw() 가 status = "DELETED" 로 바꾸는 이유
실제 DB 행을 지우는 Hard Delete 대신 상태값을 바꾸는 Soft Delete를 선택했다.
탈퇴한 회원의 데이터(예약 이력, 결제 이력 등)를 일정 기간 보관해야 할 수도 있고,
같은 아이디로 재가입을 막거나 통계 목적으로 이력을 남겨야 할 수 있기 때문이다.
deletedAt에 시각을 기록해 두면 나중에 일정 기간 후 실제 삭제하는 배치 작업도 만들 수 있다.
💡 배운 점
Entity 메서드에 도메인 규칙(검증, 상태 변경)을 넣으면 Service가 얇아지고,
같은 조건이 여러 곳에 중복되는 걸 막을 수 있다.
Soft Delete는 Hard Delete보다 복잡하지만, 데이터 복구와 이력 관리 측면에서 실무에서 더 많이 쓰인다.
'프로젝트 > Trip-Linker 팀 프로젝트' 카테고리의 다른 글
| Trip-Linker 개발일지 6 - 플래너 API 연동 및 UI 개선 — goPlanStep 검증, 날씨 팝업 (0) | 2026.06.04 |
|---|---|
| Trip-Linker 개발일지 4 - auth 도메인 전체 구현 — 로그인·토큰·비밀번호 재설정 (0) | 2026.06.04 |
| Trip-Linker 개발일지 3 - 프론트 리팩토링 — MOCK 위치, go() 렌더러, CSS 버그 (0) | 2026.06.04 |
| Trip-Linker 개발일지 2 - 계정 보안 이력 관리 Entity·Repository 구현 (0) | 2026.06.04 |