>  기사  >  Java  >  MySQL과 Hibernate 5.0 통합 시 \"org.hibernate.MappingException: Unknown 엔터티\" 오류가 발생하는 이유는 무엇입니까?

MySQL과 Hibernate 5.0 통합 시 \"org.hibernate.MappingException: Unknown 엔터티\" 오류가 발생하는 이유는 무엇입니까?

DDD
DDD원래의
2024-11-01 21:13:02496검색

Why am I getting

Hibernate 5: Hibernate-MySQL 통합에서 "org.hibernate.MappingException: 알 수 없는 엔터티" 발생

Hibernate 5.0을 다음과 통합하려고 할 때 MySQL 데이터베이스를 사용하는 경우 사용자는 "org.hibernate.MappingException: 알 수 없는 엔터티"라는 오류 메시지를 접할 수 있습니다. 이 문제는 주로 Hibernate 버전 5.0.0 및 5.0.1에 영향을 미치는 반면, 4.3.9와 같은 이전 버전은 올바르게 작동합니다.

이 문제를 해결하려면 Hibernate 5에 도입된 변경 사항을 이해하는 것이 중요합니다. 버전 4 이전에는 Hibernate가 StandardServiceRegistryBuilder에 크게 의존했습니다. 그러나 Hibernate 5에서는 구성 процессе가 변경되었습니다.

잘못된 구성 관행:

다음 코드는 Hibernate 4.3.5에서는 작동하지만 Hibernate에서는 실패합니다. 5에서는 잘못된 구성 접근 방식의 예를 보여줍니다.

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

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

SessionFactory sf = configuration.buildSessionFactory(sr);

Hibernate 5에서 이 방법으로 인해 구성.buildSessionFactory(sr) 중에 엔터티 매핑에 대한 정보가 손실됩니다.

해결책:

이 문제에 대한 두 가지 잠재적 해결책이 있습니다.

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

표준 구성 파일의 경우 다음과 같은 간단한 접근 방식을 사용하여 세션 팩토리를 생성합니다.

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

2. 외부 소스에서 속성 로드:

hibernate.properties가 아닌 다른 위치에 속성이 저장되어 있는 경우 다음 단계를 따르세요.

  • 속성을 리소스로 로드 :
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. Startup and helpers)에 제공된 예제는 올바르지 않으며 적절한 구성을 수행하지 않는다는 점에 유의하십시오. 올바른 방법은 위에 나와 있습니다.

이러한 솔루션을 구현함으로써 사용자는 Hibernate 5를 MySQL과 효과적으로 통합하고 "알 수 없는 엔터티" 오류를 해결할 수 있습니다.

위 내용은 MySQL과 Hibernate 5.0 통합 시 \"org.hibernate.MappingException: Unknown 엔터티\" 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.