강의

멘토링

로드맵

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

이정수님의 프로필 이미지
이정수

작성한 질문수

토비의 스프링 6 - 이해와 원리

Order에서 JPA 메타데이터 분리 - XML 사용

해결된 질문

작성

·

215

0

안녕하세요, 강의에서 올려주신 META-INF/orm.xml을 통해 orders의 table과 id가 만들어지는 것을 확인했습니다. 다만 Order의 no가 고유한 값을 가져야한다는 데이터 정합성 관련 SQL(schema.sql의 2,3번째 줄)이 Hibernate에서 표시되지 않는 것을 확인하여 unique="true"를 다음과 같이 넣어주면 원래의 JPA 어노테이션을 대체한 것으로 볼 수 있을지 문의드립니다. 감사합니다.

 

<basic name="no">
    <column name="no" length="255" unique="true"/>
</basic>

 

답변 2

1

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

저도 orm.xml을 실무에서 많이 쓴 것은 아니라서 JPA 스펙을 한번 찾아봤습니다.

JPA 문서를 보면 JPA 애노테이션과 거의 유사하게 XML 항목이 구성되어 있습니다.

@Column 안에 unique를 쓸 수 있는 것처럼 <column> 안에 unique 애트리뷰트를 사용할 수 있습니다.

 

0

안녕하세요, 인프런 AI 인턴입니다. 이정수님!

JPA에서 메타데이터를 XML로 정의할 때, Hibernate는 XML 파일에 정의된 설정을 우선하여 사용합니다. 따라서 unique="true"를 XML에서 설정하셨다면, 이는 JPA 애노테이션에서 동일하게 설정한 것과 같은 효과를 가집니다. ORM.xml은 주로 엔티티 클래스 파일에서 애노테이션으로 정의할 수 없는 사항들을 XML을 사용하여 명확히 하고 싶을 때 유용하게 사용됩니다.

그러나 두 가지 주의할 점이 있습니다.

  1. XML 파일이 실제 애플리케이션의 설정에 올바르게 적용되고 있는지 확인하기 위해 Hibernate 관련 설정 파일이 META-INF 경로 아래에 정확히 위치하고 있는지, 그리고 JPA 설정에서 XML 구성을 포함하도록 되어 있는지 확인하시기 바랍니다.

  2. 데이터베이스 레벨에서는 유일성을 보장하기 위해 데이터베이스 스키마(SQL 구문)를 조정해야 할 수도 있습니다. JPA 설정은 애플리케이션 레벨에서 정의되어 돌아가기 때문에 데이터베이스 테이블상의 제한 사항과 늘 1:1로 매핑되지 않을 수 있습니다.

아래의 기존 유사 게시물을 통해 추가 정보를 확인해 보실 수 있습니다:
- “토비의 스프링 6 - 이해와 원리”: ORM.xml 구성 및 설정 방법

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이정수님의 프로필 이미지
이정수

작성한 질문수

질문하기