인프런 커뮤니티 질문&답변

HW J님의 프로필 이미지

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

다대다 [N:M]

챕터6의 다양한 연관관계 매핑 - ManyToMany 전환작업시 질문드립니다.

해결된 질문

작성

·

222

0

우선 돈주고 못사는 경험이 담긴 이론강의를 잘 보고 있음에 감사드립니다. 

ManyToMany 강의(책 6.4.4)에서 ManyToMany는 사용하지 않고, 연관관계 엔티티 기반(조인테이블 기반)으로 ManyToOne, OneToMany로 푸는 과정에서 2가지 정도 추가질문 드리고자 합니다.

[ 질문 1] 실무 개발환경에서는 FK 보유한 엔티티 (강좌/책 예시에서 Order에 해당)의 테이블을  jpa persistence.xml 설정으로 create하기보다는 별도 DDL 로 테이블 먼저 생성하고, @Table 매핑으로 잡는게 실무에서 권장되는 방법인지 궁금합니다. ( 실무에서 persistence.xml에서 create 설정으로 테스트 하기 어려운 개발환경이라-기존 다른 개발디비 테이블내 테스트데이터 존재하여- 일단 FK값을 지닌 테이블 스키마를 생성하고, 연관관계 엔티티에 @Table로 매핑시키려고 합니다.) 

------------------------ 

2번 질문에 앞서 A테이블과 B테이블이 N:M 관계여서 C라는 FK 보유한 테이블을 생성하고, 이에 대한 엔티티 C를 정의했다고 가정을 하겠습니다. (C 테이블은 강의에서 권장하신대로 비즈니스로직과 무관한 auto_increment ID값을 사용합니다.)

또한 테이블은 DDL로 먼저 생성 하고, 이때 별도 FK는 정의하지 않으려고 합니다. (아무래도 테이블에서 FK는 개념상 설정을 하지만 스키마에서 강제로 지정하지는 않는 경우가 FK 제약조건 명시보다 데이터 관리에 따른 이슈가 덜하여)

[질문2 ] 위의 N:M (다대다) 관계의 엔티티 적용하여 테스트 메소드 (본믄의 JpaMain 으로 우선 h2 기반으로 테스트 합니다.) 수행시 C테이블의 엔티티에 정의된 @ManyToOne, @JoinColum(name, referencedColumnName) 설정으로 하이버네이트 콘솔결과에 FK2m6joadf 이런식으로 FK가 임의 설정된 것이 확인되는데요, 이 조인컬럼 조건들이 실제 DDL로 적용한 FK 없는 테이블의 스키마 제약조건에 영향을 미치게 될지 궁금합니다.

답변 2

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. HW J님^^

질문별로 답변 드릴께요.

[ 질문 1] 실무 개발환경에서는 FK 보유한 엔티티 (강좌/책 예시에서 Order에 해당)의 테이블을  jpa persistence.xml 설정으로 create하기보다는 별도 DDL 로 테이블 먼저 생성하고, @Table 매핑으로 잡는게 실무에서 권장되는 방법인지 궁금합니다. 

-> create는 drop도 하기 때문에 정말 위험하지요. 가급적이면 개발서버에서도 사용하지 않고, 로컬 개발 환경에서만 사용하는 것을 권장드립니다.

[질문2 ] 위의 N:M (다대다) 관계의 엔티티 적용하여 테스트 메소드 (본믄의 JpaMain 으로 우선 h2 기반으로 테스트 합니다.) 수행시 C테이블의 엔티티에 정의된 @ManyToOne, @JoinColum(name, referencedColumnName) 설정으로 하이버네이트 콘솔결과에 FK2m6joadf 이런식으로 FK가 임의 설정된 것이 확인되는데요, 이 조인컬럼 조건들이 실제 DDL로 적용한 FK 없는 테이블의 스키마 제약조건에 영향을 미치게 될지 궁금합니다.

-> 네 이러한 DDL 자동 생성 기능은 DDL을 생성하는 것만 편리하게 해주는 것이지, 애플리케이션 로직에 전혀 영향을 미치지 않습니다^^ 따라서 걱정하지 않고 사용하셔도 됩니다.

도움이 되셨길 바래요^^

1

HW J님의 프로필 이미지
HW J
질문자

감사합니다. 알기쉽게 가르쳐주신데다가 답변도 빨리주셨네요. 

HW J님의 프로필 이미지

작성한 질문수

질문하기