티스토리 뷰

Language/JAVA

JPA 1:N M:1 OneToMany ManyToOne 매핑

KyeongRok Kim 2023. 1. 19. 05:01

개요

아래 요구사항에 맞게 1:N M:1로 구성한 CourseUser 오브젝트입니다.

JPA에서 @ManyToMany가 있지만 실제 상황에서는 쓰기 어렵기 때문에 1:N M:1로 구현 합니다.

테이블은 Course, User, CourseUser 총 3개가 만들어집니다.

 

요구사항

코스(Course)에는 학생이 들어갑니다.

한명의 학생은 여러개의 코스를 수강할 수 있습니다.

한개의 코스에는 여러명의 수강생이 Assign될 수 있습니다.

 

Course

@Entity
public class CourseEntity extends BaseEntity{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    //기수 이름
    private String name;

    //설명
    private String description;

    @Enumerated(EnumType.STRING)
    private CourseStatus courseStatus;

    //시작일
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date startDate;

    //종료일
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date endDate;

    @OneToMany(mappedBy = "courseEntity")
    private List<TaskEntity> taskEntities;

    //기수 만든 사람
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    private User user;

    @OneToMany(mappedBy = "courseEntity")
    private List<CourseEntityUser> courseEntityUsers;

}

 

User

@Entity
public class User extends BaseEntity{

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

    private String userName;
    private String realName;
    private String password;

    @Enumerated(EnumType.STRING)
    private Role role;

    @OneToMany(mappedBy = "user")
    private List<TaskEntity> tasks;

    @OneToMany(mappedBy = "user")
    private List<CourseEntityUser> courseEntityUsers;

    public void setRole(Role role) {
        this.role = role;
    }
}

 

CourseUser

이 부분이 가장 중요 합니다. @ManyToOne이 2개가 들어있습니다.

@Entity
@Getter
@Setter
public class CourseUser {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User user;

    @ManyToOne
    @JoinColumn(name = "course_entity_id")
    private CourseEntity courseEntity;
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/02   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29
글 보관함