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 중국어 웹사이트의 기타 관련 기사를 참조하세요!