일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 |
- ERD 수정
- restful login 메소드
- 데이터베이스
- jpa
- restful api 작성 방법
- initializr
- springboot mysql
- 테이블항목
- 알고리즘
- 아규먼트 리졸버
- 터미널 실행
- 할일관리
- Gradle - Groovy
- 쿼리에러
- 파이썬
- sendError()
- create 모드
- restful 카멜케이스
- restful api 명세서
- springboot
- intellij 속도 향상
- Intellij terminal jar
- SpringBoot개인프로젝트
- 연관관계
- logout http 메소드
- jpa 연관관계
- 테이블구성
- 어노테이션
- auto ddl
- Gradle - Kotlin
- Today
- Total
리나 Dev토리
@ManyToOne 같은 연관관계 어노테이션 안쓰고 저장해도 되는지? 본문
할일 관리 프로젝트를 하면서
오늘 날짜에 할일을 저장하는 중에
Todo : Day 관계가
1 : N 경우도 있고
N : 1 경우도 있고 => 즉 N : N으로 만들어야 했다.
그런데 김영한 쌤 강의에서 N:N는 가급적 하지 말라고 하셨다.
@ManyToMany 를 사용하지 말고
별도로 중간 테이블 역할의 엔티티를 추가하여 N:N → 1:N, N:1 으로 풀어서 만들어야 한다.
그래서 혹시 @ManyToOne 같은 연관관계 어노테이션 안쓰고 저장해도 되는지 찾아보았다.
@ManyToOne과 같은 연관관계 어노테이션 없이도 저장할 수 있다.
그러나 이 경우에는 연관된 엔티티를 직접 참조해야 한다.
예를 들어, 다음과 같은 코드에서는 Team 엔티티와 Member 엔티티가 연관되어 있다
@Entity
public class Member {
@Id
@GeneratedValue
private Long id;
private String name;
@ManyToOne
private Team team;
}
@Entity
public class Team {
@Id
@GeneratedValue
private Long id;
private String name;
}
위 코드에서는 @ManyToOne 어노테이션을 사용하여 Member 엔티티와 Team 엔티티를 연관시켜주었다.
그러나 이를 어노테이션 없이 저장하려면 다음과 같이 코드를 작성할 수 있다:
@Entity
public class Member {
@Id
@GeneratedValue
private Long id;
private String name;
private Long teamId;
}
@Entity
public class Team {
@Id
@GeneratedValue
private Long id;
private String name;
}
위 코드에서는 Member 엔티티에서 Team 엔티티를 직접 참조하는 대신에,
teamId 필드를 사용하여 연관된 엔티티의 ID를 저장한다.
이렇게 하면 연관된 엔티티를 직접 참조하지 않아도 되므로, 어노테이션 없이도 저장할 수 있다.

ERD에 그렸던 그대로
todoId 필드에 todo엔티티의 ID를 저장해주었다.
공부하며 작성한 글입니다.
잘못된게 있다면 댓글로 알려주세요:)
'SpringBoot 개인플젝(TodayMaker)' 카테고리의 다른 글
갑자기 MySQL 연결이 안될때 Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Thread context classloader (0) | 2023.04.07 |
---|---|
[트슈] IllegalStateException: Cannot call sendError() after the response has been committed (0) | 2023.04.06 |
Restful API 설계하기 (1) | 2022.12.21 |
DDL create모드로 DB 스키마 적용 (0) | 2022.12.20 |
1차 회원가입까지의 트러블 슈팅 (0) | 2022.11.21 |