> 데이터 베이스 > MySQL 튜토리얼 > Hibernate 5 '알 수 없는 엔터티' 오류: 엔터티 매핑을 위해 SessionFactory를 올바르게 구성하는 방법은 무엇입니까?

Hibernate 5 '알 수 없는 엔터티' 오류: 엔터티 매핑을 위해 SessionFactory를 올바르게 구성하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-15 03:45:23
원래의
439명이 탐색했습니다.

Hibernate 5

Hibernate 5: 통합 중 "알 수 없는 엔터티" 오류 해결

Hibernate 5.0을 MySQL과 통합하려고 시도하는 동안 많은 개발자가 오류 메시지를 접하게 됩니다. "org.hibernate.MappingException: 알 수 없는 엔터티." 이 문제는 특히 Hibernate 버전 5.0.0 및 5.0.1에서 발생하지만 4.3.9와 같은 이전 버전은 올바르게 작동합니다.

문제 정의

"알 수 없는 엔터티 " 오류는 Hibernate가 엔터티로 주석이 달린 클래스를 인식할 수 없을 때 발생합니다. 이는 클래스에 대한 매핑 메타데이터가 제대로 구성되지 않았거나 Hibernate 구성에 추가되지 않은 경우 발생할 수 있습니다.

구성 세부 정보

제공된 Maven 종속성 및 hibernate.cfg. xml 구성이 올바른 것 같습니다. User 클래스도 엔터티로 주석이 추가되어 데이터베이스 테이블 "User_table"에 매핑되었습니다.

원인 및 해결 방법

이 문제의 근본 원인은 다음과 같습니다. HibernateMain 클래스에 SessionFactory를 생성하는 과정. Hibernate 5에서는 다음 코드를 사용하여 SessionFactory를 구성하고 빌드합니다.

Configuration configuration = new Configuration();
configuration.configure();

ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(
    configuration.getProperties()).build();

SessionFactory sf = configuration.buildSessionFactory(sr);
로그인 후 복사

Hibernate 5에서 Configuration.buildSessionFactory(sr)를 사용하면 구성이 호출하여 얻은 매핑 정보를 잃게 되기 때문에 문제가 발생합니다. 구성.구성(). 결과적으로 Hibernate는 User 클래스를 주석이 달린 엔터티로 인식할 수 없습니다.

해결 방법

이 문제를 해결하려면 두 가지 접근 방식이 있습니다.

표준 구성 파일(hibernate.cfg.xml 및 hibernate.properties)

표준 구성 파일을 사용하는 경우 ServiceRegistry를 사용하지 않고 SessionFactory를 생성할 수 있습니다.

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
로그인 후 복사

속성 로드

별도의 파일에 속성이 있는 경우 해당 속성을 로드하고 SessionFactory를 빌드할 수 있습니다. StandardServiceRegistryBuilder 사용.

속성을 리소스로 로드

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
로그인 후 복사

경로에서 속성 로드

File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
로그인 후 복사

추가 참고

  • Hibernate 5 문서(1.1.6 시작 및 도우미)의 예제 튜토리얼은 적절한 구성을 수행하지 않는 잘못된 예제를 제공합니다.
  • 잘못된 코드 사용 "알 수 없는 엔터티" 오류가 발생할 수 있습니다.

위 내용은 Hibernate 5 '알 수 없는 엔터티' 오류: 엔터티 매핑을 위해 SessionFactory를 올바르게 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿