MEMBER -ORDER 테이블 에서 JoinColumn 에 관련
243
작성한 질문수 22
@OneToMany
@JoinColumn(name="member")
private List<Order> orders = new ArrayList<>();@ManyToOne
@JoinColumn(name="member_id") //맵핑할 컬럼
private Member member;Member 의 joinColumn 은 member 객체 자체이고
Order의 joinColumn은 db의 컬럼 명인데
member 의 joinColumn 을 member_id, 즉 db의 컬럼명으로 또는 그냥 id 라고 하면 안되나요? 안된다면 이유도 알려주시면 감사하겠습니다!!
답변 2
0
안녕하세요. 카도아보님
이 부분을 자세히 이해하려면 연관관계 매핑이라는 JPA의 기본을 학습하셔야 합니다.
이 부분은 JPA 기본편을 학습하시면 연관관계 매핑에 대한 전반을 이해하실 수 있을거에요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
@JoinColumn을 사용하는 경우, name 속성은 실제 데이터베이스 컬럼 이름을 지정하는 용도로 사용됩니다. @ManyToOne이나 @OneToMany와 같은 관계 매핑에서 @JoinColumn의 name 속성을 사용하여 외래 키(foreign key)의 이름을 지정합니다.
Member 클래스에서 @OneToMany 관계를 맺고 있는 orders 필드에 @JoinColumn(name="member")라고 지정하셨는데, 이는 Order 테이블에 member라는 컬럼이 외래 키로 사용됨을 의미합니다. 하지만, 일반적으로 @OneToMany 관계에서는 @JoinColumn을 사용하지 않는 것이 좋습니다. 왜냐하면 @OneToMany 관계에서 @JoinColumn을 직접 사용하면, 관리해야 하는 외래 키가 여러 개가 될 수 있기 때문입니다. 대신 @OneToMany 관계는 mappedBy 속성을 사용하여 양방향 관계의 소유측이 어디인지를 명시하는 것이 일반적입니다.
Order 클래스에서는 @ManyToOne 관계를 맺기 위해 @JoinColumn(name="member_id")를 사용하여, Member와 Order를 연결하는 외래 키 컬럼으로 member_id를 명시적으로 지정하고 있습니다. 이 경우는 올바른 사용 방법입니다.
따라서, Member 클래스에서 @JoinColumn을 사용하는 대신 @OneToMany(mappedBy="member") 같은 형태로 Order 클래스에서 Member를 참조하는 필드 이름을 mappedBy 속성으로 지정해 주어야 합니다. 이렇게 하면 Order 테이블의 member_id 컬럼을 통해 Member와 Order가 연결되며, JPA가 관계를 올바르게 관리할 수 있게 됩니다.
@OneToMany(mappedBy="member")
private List<Order> orders = new ArrayList<>();
본문에서 언급하신 @JoinColumn(name="member_id")를 Member 클래스에 직접 사용하는 것은 데이터베이스 설계와 JPA 매핑 전략에 따라 다를 수 있으나, 일반적인 사용 패턴은 위에서 설명한 대로 @OneToMany 관계에서는 mappedBy 속성을 사용하는 것입니다.
OrderServiceTest 상문주문 테스트 시 update 쿼리 문의
0
27
1
sdk 설정 오류
0
68
2
오탈자 - @Transactional
0
63
1
src/test/resources 테스트 경로 문제
0
60
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
70
1
MemberRepositoryTest 실행오류
0
90
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
197
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
154
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
56
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
80
1
기본 생성자
0
67
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
107
1
멤버서비스테스트 부분에서 막힙니다.
0
174
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
124
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
129
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
122
1
24분 27초 연관관계 편의 메서드 위치
0
118
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
114
2
빌드 툴, Gradle
0
65
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
82
2
Repository에서 EntityManager 주입 방식 차이
0
97
1
롬복과 사용자 정의 setter 메서드
0
78
1
주문 목록 조회 fetch join 질문드립니다
0
91
1
dirty checking 질문드립니다.
0
87
1





