이 비디오는 Spring Boot를 사용하여 이벤트 티켓 플랫폼을 구축하는 중급 프로젝트의 4부로, 도메인 엔티티 클래스와 JPA 관계 구현에 중점을 둡니다. 🚀
엔티티 구현에 앞서 EventStatus, TicketStatus, TicketValidationStatus, TicketValidationMethod, QRCodeStatus 등 5가지 핵심 Enum 클래스를 정의하여 이벤트, 티켓, QR 코드의 다양한 상태와 유효성 검사 방법을 나타냅니다. 🏷️
User 엔티티는 주최자, 스태프, 참석자 등 모든 사용자 유형을 단일 클래스로 통합하며, 역할 관리는 Keycloak을 통해 분리하여 다형성 구현의 복잡성을 피합니다. 🧑💻
엔티티 클래스에는 @Data 어노테이션 대신 @Getter, @Setter, @NoArgsConstructor, @AllArgsConstructor, @Builder를 개별적으로 사용하여 양방향 관계에서 발생할 수 있는 equals 및 hashCode 스택 오버플로우 문제를 방지합니다. 🚫
User 엔티티는 고유 ID(UUID), 이름, 이메일 필드를 포함하며, createdAt 및 updatedAt과 같은 감사 필드를 추가하여 엔티티의 생성 및 수정 시간을 자동으로 기록합니다. 📝
Event 엔티티는 이벤트의 ID, 이름, 시작/종료 시간, 장소, 티켓 판매 시작/종료일, 그리고 EventStatusEnum을 활용한 상태 정보를 포함하도록 설계됩니다. 🏟️
모든 엔티티의 equals 및 hashCode 메서드 생성은 개발 과정의 마지막 단계로 미루어, 반복적인 재생성 없이 효율적인 구현을 목표로 합니다. 💡