챕터6의 다양한 연관관계 매핑 - ManyToMany 전환작업시 질문드립니다.
우선 돈주고 못사는 경험이 담긴 이론강의를 잘 보고 있음에 감사드립니다.
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을 생성하는 것만 편리하게 해주는 것이지, 애플리케이션 로직에 전혀 영향을 미치지 않습니다^^ 따라서 걱정하지 않고 사용하셔도 됩니다.
도움이 되셨길 바래요^^
실무 조언 관련 질문입니다.
0
40
1
H2데이터베이스 파일 생성
0
48
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
49
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
46
1
JPQL 메소드와 락
0
49
1
Delivery @OneToOne
0
55
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
85
2
UnsupportedOperationException 발생
0
81
3
H2 Database 연결이 안됩니다.
0
87
2
연관관계 매핑 질문드립니다.
0
79
2
h2데이터베이스 실행오류
0
103
2
persistence.xml
0
101
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
76
1
영속성 컨텍스트
0
61
1
JPA 프록시
0
87
1
Native Query와 MyBatis
0
62
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
81
1
임베디드 타입 예시 코드 관련 질문
0
110
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
89
3
인텔리제이 패키지 커서 단축키 질문
0
104
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
134
1
양방향 연관관계 시 연관관계 주인을 설정하는 이유
0
67
1
임베디드 타입과 MappedSuperClass의 차이점이 궁금합니다.
0
95
1
데이터베이스가 초기화되는 것 같아요
1
174
2





