강의

멘토링

로드맵

Inflearn brand logo image

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

임동현님의 프로필 이미지
임동현

작성한 질문수

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

Member 애플리케이션 추가 기능 개발

FK 제약조건 관련해서 자동 키생성 문제

작성

·

103

·

수정됨

0

해당 강의를 수강하고 하루죙일 찾아봤지만 실질적으로는 문제를 해결하지 못했습니다. ㅜㅜ

 

문제가 왜 발생했는지 추적한 결과

스크린샷 2025-08-02 184055.png

실제로 xml를 불러들일때, fk 관련 속성을 잘 갖고 오지만,

스크린샷 2025-08-03 121059.png

@JoinColumn 을 생성할 때 fk 속성을 삽입하는 코드가 실질적으로 존재하지 않고,

fk제약 조건 생성을 위해 alter 시에

스크린샷 2025-08-03 121816.png

@JoinColumns로 지정됩니다.

 

실제 어노테이션 기법으로 작성 할 경우

image.png

 

image.png

@JoinColumn으로 수집이 되지만,


-참고-

@JoinColumns 으로 수집 시

image.pngimage.png

xml 스펙에서 join-column 태그는 Unbounded로 스펙이 정해져 그렇게 처리 된 거 같아요. 하이버네이트 6.6 버전에서는 jpa 매핑 관련해서 xml 3.1 버전으로 관리되고, 7.0 버전부터는 xml 7버전으로 매핑이 관리될 것 같습니다.

 

하이버네이트 6.6 버전에선 실질적으로 버그라고 생각되고, 7.0 버전에는 JPAXMLOverridenAnnotationReader 클래스가 사라진 상황이라 7 버전으로 올려서 확인해봐야 할 것 같지만, 스프링 부트 3.x.x버전은 아무래도 하이버네이트 6.6 버전 기준으로 버저닝이 될 거 같아 해당 문제의 해결 방법은 실질적으로 찾진 못했습니다. ㅜ

답변 2

0

토비님의 프로필 이미지
토비
지식공유자

안녕하세요.

XML을 이용하는 경우 FK 제약조건에 대한 설정이 적용되지 않는 문제는 저도 확인을 했습니다. 말씀하신 대로 버그인 듯한데 아무도 관심이 없어서 그런지 아직 이슈로도 등록은 안 되어있는 듯합니다. 시간이 날 때 좀 더 추적해보고 리포트를 해보면 좋을 듯합니다.

클린 스프링 강의 시리즈에서는 DDL 자동 생성 기능은 초반이나 테스트에서만 주로 사용하고, 본격적인 운영 시스템 준비를 하면서 SQL DB 마이그레이션 도구를 사용해서 직접 스키마를 관리하려고 합니다.

임동현님의 프로필 이미지
임동현
질문자

커피 한잔 얻어 먹고 싶었는데 실패했습니다. 감사합니다

0

안녕하세요, 인프런 AI 인턴입니다. 임동현님!

질문하신 외래키(FK) 제약 조건 관련 문제는 JPA와 Hibernate의 버전 및 XML 매핑 특성과 연관된 문제로 보입니다. 아래에서 문제를 해결하기 위한 몇 가지 방법을 제시하겠습니다:

  1. Hibernate 버전 확인 및 업데이트:

    • 사용 중인 Hibernate 버전이 외래키 제약 조건과 관련된 문제를 어떻게 처리하는지 확인하고, 최신 버전으로 업데이트를 고려해보세요. Hibernate는 종종 여러 버그 수정 및 개선이 포함된 업데이트가 발생하므로, 최신 버전을 사용하시면 더 안정적인 동작을 기대할 수 있습니다.
  2. 스프링 부트 버전 확인:

    • 스프링 부트의 버전이 Hibernate와 어떻게 호환되는지를 확인해 봐야 합니다. 스프링 부트의 특정 버전은 Hibernate의 특정 버전과 더 호환성이 좋을 수 있기 때문에 주의가 필요합니다.
  3. 어노테이션 매핑 확인:

    • @JoinColumn@JoinColumns를 사용할 때, 각각이 정의하는 외래키 제약 조건의 차이를 이해하셔야 합니다. 각각의 어노테이션이 어떻게 외래키를 생성하고 사용되는지를 이해하는 것이 중요합니다.
  4. JPAXMLOverridenAnnotationReader 클래스 문제:

    • 이 클래스가 제거된 버전에서는 사용 방법이 달라졌을 수 있습니다. Hibernate의 XML 매핑 문서를 참조하여 새로운 방식으로 설정을 변경해야 합니다.
  5. 데이터베이스 제약 조건 수동 설정:

    • 경우에 따라 XML 매핑을 통해 자동으로 해결되지 않는 경우 수동으로 데이터베이스 제약 조건을 설정하는 것도 고려할 수 있습니다. DDL 스크립트를 사용하여 제약 조건을 직접 정의할 수 있습니다.

이미지를 통해 전해주신 정보를 바탕으로, 위의 방법들을 하나씩 확인하시면서 문제를 해결하실 것을 추천드립니다.

질문자님의 이해를 돕기 위해 아래 링크에서 유사한 질문과 답변을 참고해 보시길 권장드립니다:
- DataSource 자동구성클래스 실습오류 발생
- 어노테이션매핑정보 - 404 오류 문의드립니다

현재 베타 기능으로, 답변에 만족하지 않으실 수도 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

임동현님의 프로필 이미지
임동현

작성한 질문수

질문하기