Skip to content

Conversation

@HJunng
Copy link
Collaborator

@HJunng HJunng commented Jan 2, 2026

📝 변경 사항

백엔드 데이터베이스 구조(엔티티)를 구현했습니다.

🎯 작업 내용

구현된 엔티티 (데이터 구조)

  • User (사용자)

    • 사용자 기본 정보 관리
  • Group (그룹)

    • 그룹 생성 및 관리
    • 공개/비공개 설정 기능 (Visibility)
    • 제목 길이 제한 검증
  • Tag (태그)

    • 장소에 붙일 수 있는 태그
    • 태그 이름과 색상(HEX) 관리
  • Place (장소)

    • 장소 정보 저장
    • 주소(Address), 이미지(PlaceImage), 태그(PlaceTag) 포함
    • 각 장소는 여러 이미지와 태그를 가질 수 있음

기술적 개선사항

  • UUID v7 도입

    • 각 데이터의 고유 ID를 UUID v7 방식으로 생성
    • 시간 순서 정렬 가능 (생성 시간 기준으로 ID 자체가 정렬됨)
    • UuidV7Generator를 활용하여 UUID 생성 로직을 각 엔티티의 팩토리 메서드에 설정
  • 타임존 설정

    • 모든 시간 데이터를 한국 시간(Asia/Seoul) 기준으로 저장
  • 공통 필드 자동 관리

    • 생성 시간(createdAt), 수정 시간(updatedAt) 자동 관리
    • 삭제 시간(deletedAt)으로 소프트 삭제 지원

🔗 관련 이슈

Closes #58

📸 스크린샷 (선택사항)

image

💬 리뷰어에게

  • 그룹 shared 기능이 빠지면서 entity 수정한거 반영해뒀습니다. erd 한번 더 확인해주시고, entity 관련해서 이상한 점 있으시면 알려주시면 감사하겠습니다~
  • entity만 만들어둔 거고, 나머지 작업은 각각 맡은 파트 담당자분들이 안드로이드 연결까지 하면 될 것 같습니다!

HJunng added 10 commits January 2, 2026 11:41
- `uuid-creator` 라이브러리 추가
- `StringToUuidConverter` 구현으로 문자열을 UUID로 변환하도록 설정
- Spring Web MVC 구성에 uuid-converter 등록
- `UuidV7Generator` 객체 구현으로 UUID v7 생성 기능 제공
- `TZ` 및 `PGTZ` 환경 변수에 `Asia/Seoul` 값 설정 추가
- `BaseTimeEntity` 및 `BaseTimeSyncEntity` 생성으로 공통 시간 관리 필드 및 동작 분리
- `BaseEntity`에서 UUID 자동 생성 로직 추가 (`UuidV7Generator` 활용)
- `Tag` 엔티티 구현으로 태그 관리 기능 지원
- 이름 및 HEX 색상 검증 로직 포함
- `Group` 엔티티 생성으로 그룹 관리 기능 지원
- 제목 길이 및 가시성(Visibility) 검증 로직 포함
- `Place`, `Address`, `PlaceImage`, `PlaceTag` 엔티티 구현
- 장소의 주소, 이미지, 태그 관련 연관관계 매핑 및 검증 로직 추가
@HJunng HJunng linked an issue Jan 2, 2026 that may be closed by this pull request
@HJunng HJunng self-assigned this Jan 2, 2026
@HJunng HJunng added the feature 기능 추가, ui 변경 label Jan 2, 2026
@HJunng HJunng added this to the 백엔드 공통작업 milestone Jan 2, 2026
- `UuidV7Generator`를 활용하여 UUID 생성 로직을 각 엔티티의 팩토리 메서드로 이동
- `BaseEntity`에서 UUID 자동 생성 기능 제거
@HJunng HJunng changed the title feat: 백엔드 엔티티 구조 구현 (#58) [Feature] 백엔드 엔티티 구조 구현 Jan 2, 2026
@uselessnaming uselessnaming self-requested a review January 2, 2026 09:17
Copy link
Collaborator

@uselessnaming uselessnaming left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

추상화를 통해서 UUID 생성하는 것과 시간과 관련된 속성을 중복을 갖는 Entity들을 묶어주셨다고 이해하면 될까요?

@Entity
@Table(name = "place_images")
@SQLDelete(sql = "UPDATE place_images SET deleted_at = CURRENT_TIMESTAMP WHERE id = ?")
@SQLRestriction("deleted_at IS NULL")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 restriction 어노테이션이 어떤 의미인지 궁금합니다!

Copy link
Collaborator Author

@HJunng HJunng Jan 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

soft delete 하면서 deleted_at을 사용하는데,
매번 조회할 때 where deleted_at is not null 인거 붙여서 조회하지 않아도 자동으로 null인 거 빼고 조회하도록 도와주는 부분입니다! 조회할 때 놓칠 수도 있고, 매번 저 조건을 추가하는 것도 쿼리가 길어져서요!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature 기능 추가, ui 변경

Projects

None yet

Development

Successfully merging this pull request may close these issues.

백엔드 entity 생성

3 participants