복붙노트

[SPRING] 더 이상 사용되지 않는 javax.persistence.spi.PersistenceProvider가 발생했습니다.

SPRING

더 이상 사용되지 않는 javax.persistence.spi.PersistenceProvider가 발생했습니다.

Spring & Hibernate를 사용할 때 다음과 같은 로그 경고를 만난 적이 있습니까?

어떻게 처리할까요? 어떤 답해 주셔서 감사합니다.

해결법

  1. ==============================

    1.그것은해야한다

    그것은해야한다

    org.hibernate.jpa.HibernatePersistenceProvider
    

    이것 좀 봐.

  2. ==============================

    2.Spring Data JPA와 Java Configuration을 사용하고 있다면 Entity Manager Factory에 다음 코드를 추가하여이를 해결할 수 있습니다.

    Spring Data JPA와 Java Configuration을 사용하고 있다면 Entity Manager Factory에 다음 코드를 추가하여이를 해결할 수 있습니다.

    factory.setPersistenceProvider (새로운 HibernatePersistenceProvider ());

    @Bean
        public EntityManagerFactory entityManagerFactory() throws SQLException {
    
          HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
          vendorAdapter.setGenerateDdl(true);
          vendorAdapter.setShowSql(true);
    
          LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
          factory.setJpaVendorAdapter(vendorAdapter);
          **factory.setPersistenceProvider(new HibernatePersistenceProvider());**
          factory.setPackagesToScan("com.company.appname.persistence.domain");
          factory.setDataSource(dataSource());
    
          factory.setJpaProperties(hibernateProperties());
          factory.afterPropertiesSet();
    
          return factory.getObject();
        }
    

    Spring Data JPA로 Hibernate 설정의 좋은 예를 찾을 수있다 : http://spring.io/guides/tutorials/data/3/

  3. ==============================

    3.persistence.xml에 transaction-type = "RESOURCE_LOCAL"이라는 Spring 컨텍스트에서 JPA의 Entity Manager로 작업하는 동안이 문제가 발생했습니다.

    persistence.xml에 transaction-type = "RESOURCE_LOCAL"이라는 Spring 컨텍스트에서 JPA의 Entity Manager로 작업하는 동안이 문제가 발생했습니다.

    항상 버그는 아닙니다. 실제로 잘못된 공급자가 구성되었습니다.

    persistence.xml에서 제공자를

    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    

    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    

    그리고 그것은 잘 작동합니다.

    패키지가 EJB에서 JPA로 변경되었습니다.

  4. ==============================

    4.SPRING을 사용하지 않는 사용자의 경우 :

    SPRING을 사용하지 않는 사용자의 경우 :

    우리는 표준 javax.persistence 부트 스트랩을 Hibernate 특정 부트 스트랩으로 대체 할 수있다.

    늙은:

    EntityManagerFactory emf = Persistence.createEntityManagerFactory(
        PERSISTENCE_UNIT, props );
    

    새로운:

    PersistenceProvider provider = new HibernatePersistenceProvider();
    EntityManagerFactory emf = provider.createEntityManagerFactory(
       PERSISTENCE_UNIT, props);
    

    이제는 더 이상 사용되지 않는 경고가 없어야합니다. 문제는 여전히 4.3.1 최종판에있었습니다. 최종 5.1.0. 최종에서 그것은 고쳐 져야합니다.

  5. ==============================

    5.org.hibernate.ejb.HibernatePersistence 클래스가 사용되지 않으므로이 메시지가 나타납니다. 내 persistence.xml 파일에서 제공자 클래스가 org.hibernate.ejb.HibernatePersistence를 가지고 있음을 발견했으며 stacktrace 경고 메시지에서 언급 한대로 org.hibernate.jpa.HibernatePersistenceProvider로 변경했습니다.

    org.hibernate.ejb.HibernatePersistence 클래스가 사용되지 않으므로이 메시지가 나타납니다. 내 persistence.xml 파일에서 제공자 클래스가 org.hibernate.ejb.HibernatePersistence를 가지고 있음을 발견했으며 stacktrace 경고 메시지에서 언급 한대로 org.hibernate.jpa.HibernatePersistenceProvider로 변경했습니다.

    persistence.xml

    <persistence-unit name="personPersistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>Person</class>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/db_name"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
            ....
        </properties>
    </persistence-unit>
    
  6. ==============================

    6.org.hibernate.ejb.HibernatePersistence를 persistence.xml의 org.hibernate.jpa.HibernatePersistenceProvider로 변경 한 후 또한 hibernate-entitymanager 의존성 버전을 변경하고 버그를 수정 한 5.2.10.Final의 마지막 버전을 얻으십시오. 여기있다 :

    org.hibernate.ejb.HibernatePersistence를 persistence.xml의 org.hibernate.jpa.HibernatePersistenceProvider로 변경 한 후 또한 hibernate-entitymanager 의존성 버전을 변경하고 버그를 수정 한 5.2.10.Final의 마지막 버전을 얻으십시오. 여기있다 :

    http://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager/5.2.10.Final

    그것은 나를 위해 일했다.

  7. ==============================

    7.나는 그 참조를 다음과 같이 바꿨다 :

    나는 그 참조를 다음과 같이 바꿨다 :

    org.hibernate.jpa.HibernatePersistenceProvider
    

    그러나 그것은 작동하지 않았다.

    그런 다음 Hibernate 4.x jar libs에 대한 모든 참조를 제거하고 마지막 버전 (5.2.7)을 다운로드 한 다음이 jar 파일을 추가하고 마침내 작동합니다.

  8. from https://stackoverflow.com/questions/21693139/encountered-a-deprecated-javax-persistence-spi-persistenceprovider by cc-by-sa and MIT license