본문 바로가기
스프링과 JPA 기반 웹 어플리케이션 개발/5부 모임

60. 모임 도메인

by Backchus 2020. 4. 30.

Event

  • EventType (enum)
  • Study
  • Account createdBy
  • String title
  • @Lob String description
  • int limitOfEnrollments
  • List<Enrollment> enrollments

데이터 모델링

  • Event에서 Study 쪽으로 @ManyToOne 단방향 관계
  • Event와 Enrollment는 @OneToMany @ManyToOne 양방향 관계
  • Event는 Account 쪽으로 @ManyToOne 단방향 관계
  • Enrollment는 Account 쪽으로 @ManyToOne 단방향 관계

 

모임에 해당하는 Event 엔티티 생성

package me.weekbelt.studyolle.domain;

@NoArgsConstructor
@Getter @Setter @EqualsAndHashCode(of = "id")
@Entity
public class Event {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    private Study study;

    @ManyToOne
    private Account createdBy;

    @Column(nullable = false)
    private String title;

    @Lob
    private String description;

    @Column(nullable = false)
    private LocalDateTime createdDateTime;

    @Column(nullable = false)
    private LocalDateTime endEnrollmentDateTime;

    @Column(nullable = false)
    private LocalDateTime startDateTime;

    @Column(nullable = false)
    private LocalDateTime endDateTime;

    @Column
    private Integer limitOfEnrollments;


    @OneToMany(mappedBy = "event")
    private List<Enrollment> enrollments = new ArrayList<>();

    @Enumerated(EnumType.STRING)
    private EventType eventType;

}

 

이벤트 타입으로 먼저 온 사람들이 참여하는 이벤트인 FCFS와 모임 생성자가 따로 관리해서 선발하는 방식인 CONFIRMATIVE타입으로 enum타입으로 생성

package me.weekbelt.studyolle.domain;

public enum EventType {

    FCFS, CONFIRMATIVE
}

 

모임 참가자에 해당하는 Enrollment 엔티티 생성

package me.weekbelt.studyolle.domain;

@Getter @Setter @EqualsAndHashCode(of = "id")
@Entity
public class Enrollment {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    private Event event;

    @ManyToOne
    private Account account;

    private LocalDateTime enrolledAt;

    private boolean accepted;

    private boolean attended;
}

 

참고: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-JPA-%EC%9B%B9%EC%95%B1#

 

스프링과 JPA 기반 웹 애플리케이션 개발 - 인프런

이 강좌에서 여러분은 실제로 운영 중인 서비스를 스프링, JPA 그리고 타임리프를 비롯한 여러 자바 기반의 여러 오픈 소스 기술을 사용하여 웹 애플리케이션을 개발하는 과정을 학습할 수 있습니다. 이 강좌를 충분히 학습한다면 여러분 만의 웹 서비스를 만들거나 취직에 도움이 될만한 포트폴리오를 만들 수 있을 겁니다. 중급이상 웹 개발 프레임워크 및 라이브러리 Java Spring Spring Boot Spring Data JPA Thymeleaf 온라인 강의

www.inflearn.com