스파르타 Java 단기 심화 과정


Spring 숙련 1주차 강의



Spring 숙련 2주차 강의


스프링 RestTemplate


JPA Entity 연관 관계

  • DB는 어떤 테이블 기준이든 원하는 정보를 JOIN으로 조회가 가능해서 방향의 개념이 없음
    • Entity에서는 각 Entity사이에 연관관계를 양방향, 단방향 모두 설정 가능하다.
    • 1:1 관계
    • N:1 관계
    • 1:N 관계
      • @OneToMany 어노테이션을 통해 1 대 N 관계 설정 가능
      • 단방향
      • 양방향
        • 1 대 N 관계에서는 일반적으로 양방향 관계가 존재하지 않음
        • → 왜냐하면 ManyToOne 어노테이션은 mappedBy 옵션을 제공하지 않기 때문
        • 예시
              // 고객 Entity
              @ManyToOne
              @JoinColumn(name = "food_id", insertable = false, updatable = false)
              private Food food;
        • N 관계의 Entity에서 @JoinColumn의 insertable, updatable 옵션을 통해 양방향처럼 설정할 수는 있지만 권장 X
    • M:N 관계
      • @ManyToMany 어노테이션을 통해 M 대 N 관계 설정 가능
      • 단방향
        • @JoinTable(name = “{중간 테이블 명}”, joinColumns = @JoinColumn(name = “{현재 Entity 조인할 Column} , inverseJoinColumns = @JoinColumn(name = “{반대편 Entity 조인할 Column}”)
        • 예시
              // 음식 Entity
              @ManyToMany
              @JoinTable(name = "orders", // 중간 테이블 생성
              joinColumns = @JoinColumn(name = "food_id"), // 현재 위치인 Food Entity 에서 중간 테이블로 조인할 컬럼 설정
              inverseJoinColumns = @JoinColumn(name = "user_id")) // 반대 위치인 User Entity 에서 중간 테이블로 조인할 컬럼 설정
              private List<User> userList = new ArrayList<>();
        • https://github.com/lukeydokey/Sparta-Spring/commit/4001bba9763a792aa3c5b76d360698b4d6c92a66
      • 양방향
        • @JoinTable(name = “{중간 테이블 명}”, joinColumns = @JoinColumn(name = “{현재 Entity 조인할 Column} , inverseJoinColumns = @JoinColumn(name = “{반대편 Entity 조인할 Column}”)
        • 반대편 Entity에는 @ManyToMany 어노테이션과 mappedBy 옵션을 사용
        • 예시
              // 음식 Entity
              @ManyToMany
              @JoinTable(name = "orders", // 중간 테이블 생성
              joinColumns = @JoinColumn(name = "food_id"), // 현재 위치인 Food Entity 에서 중간 테이블로 조인할 컬럼 설정
              inverseJoinColumns = @JoinColumn(name = "user_id")) // 반대 위치인 User Entity 에서 중간 테이블로 조인할 컬럼 설정
              private List<User> userList = new ArrayList<>();
              
              // 고객 Entity
              @ManyToMany(mappedBy = "userList")
              private List<Food> foodList = new ArrayList<>();
        • https://github.com/lukeydokey/Sparta-Spring/commit/ea05bfd0fd20ab0516e21c7b402c8bab98006767
      • 중간테이블

토이프로젝트 - GetherTube


진행 상황


특이 사항


  • 배포 후 Swagger Test시 MongoDB에서 데이터 못 읽어오는 Issue 발생
    -> MongoDB Atlas를 사용중이기 때문에 EC2 인스턴스에서 Atlas에 접근이 가능하도록 아래와 같이 Project 내 Security - Network Access에서 EC2의 Public IP 추가 필요
    Atlas Network Access Setting
profile
기록을 남겨보자

0개의 댓글