简体   繁体   中英

Is the provider information optional for persistence.xml?

I am new to JBoss and JPA, but below is the persistence.xml i have in my existing Hibernate JPA application, it runs on JBoss EAP

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="TeradataDB" transaction-type="JTA">
        <jta-data-source>java:/jdbc/trucare/trucareEDW</jta-data-source>
    </persistence-unit>
</persistence>

I am expecting an extra line in xml with provider information like this ...

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

But my application runs with out this line, How is it even possible? Where is JPA getting the provider information even though it is not mentioned anywhere in persistence.xml. However my application runs fine with no issues..

Jars in my project:-

m2\repository\com\google\code\gson\gson\2.2.4\gson-2.2.4.jar
m2\repository\org\codehaus\jackson\jackson-core-asl\1.9.13\jackson-core-asl-1.9.13-sources.jar
m2\repository\org\codehaus\jackson\jackson-mapper-asl\1.9.13\jackson-mapper-asl-1.9.13.jar
m2\repository\org\codehaus\jackson\jackson-core-asl\1.9.13\jackson-core-asl-1.9.13.jar
m2\repository\org\json\json\20090211\json-20090211.jar
m2\repository\com\teradata\jdbc\terajdbc4\14.10.00.26\terajdbc4-14.10.00.26.jar
m2\repository\javax\enterprise\cdi-api\1.0-SP4\cdi-api-1.0-SP4.jar
m2\repository\org\jboss\spec\javax\interceptor\jboss-interceptors-api_1.1_spec\1.0.1.Final\jboss-interceptors-api_1.1_spec-1.0.1.Final.jar
m2\repository\javax\inject\javax.inject\1\javax.inject-1.jar
m2\repository\org\jboss\spec\javax\annotation\jboss-annotations-api_1.1_spec\1.0.1.Final\jboss-annotations-api_1.1_spec-1.0.1.Final.jar
m2\repository\org\jboss\spec\javax\ws\rs\jboss-jaxrs-api_1.1_spec\1.0.1.Final\jboss-jaxrs-api_1.1_spec-1.0.1.Final.jar
m2\repository\org\hibernate\javax\persistence\hibernate-jpa-2.1-api\1.0.0.Final\hibernate-jpa-2.1-api-1.0.0.Final.jar
m2\repository\org\jboss\spec\javax\ejb\jboss-ejb-api_3.1_spec\1.0.2.Final\jboss-ejb-api_3.1_spec-1.0.2.Final.jar
m2\repository\org\hibernate\hibernate-validator\4.2.0.Final\hibernate-validator-4.2.0.Final.jar
m2\repository\javax\validation\validation-api\1.0.0.GA\validation-api-1.0.0.GA.jar
m2\repository\org\hibernate\hibernate-jpamodelgen\1.2.0.Final\hibernate-jpamodelgen-1.2.0.Final.jar
m2\repository\org\hibernate\hibernate-validator-annotation-processor\4.2.0.Final\hibernate-validator-annotation-processor-4.2.0.Final.jar
m2\repository\junit\junit\4.11\junit-4.11.jar
m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar
m2\repository\org\jboss\arquillian\junit\arquillian-junit-container\1.1.0.Final\arquillian-junit-container-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\junit\arquillian-junit-core\1.1.0.Final\arquillian-junit-core-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\test\arquillian-test-api\1.1.0.Final\arquillian-test-api-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\core\arquillian-core-api\1.1.0.Final\arquillian-core-api-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\test\arquillian-test-spi\1.1.0.Final\arquillian-test-spi-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\core\arquillian-core-spi\1.1.0.Final\arquillian-core-spi-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\container\arquillian-container-test-api\1.1.0.Final\arquillian-container-test-api-1.1.0.Final.jar
m2\repository\org\jboss\shrinkwrap\shrinkwrap-api\1.1.2\shrinkwrap-api-1.1.2.jar
m2\repository\org\jboss\arquillian\container\arquillian-container-test-spi\1.1.0.Final\arquillian-container-test-spi-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\core\arquillian-core-impl-base\1.1.0.Final\arquillian-core-impl-base-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\test\arquillian-test-impl-base\1.1.0.Final\arquillian-test-impl-base-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\container\arquillian-container-impl-base\1.1.0.Final\arquillian-container-impl-base-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\config\arquillian-config-api\1.1.0.Final\arquillian-config-api-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\config\arquillian-config-impl-base\1.1.0.Final\arquillian-config-impl-base-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\container\arquillian-container-test-impl-base\1.1.0.Final\arquillian-container-test-impl-base-1.1.0.Final.jar
m2\repository\org\jboss\shrinkwrap\shrinkwrap-impl-base\1.1.2\shrinkwrap-impl-base-1.1.2.jar
m2\repository\org\jboss\shrinkwrap\shrinkwrap-spi\1.1.2\shrinkwrap-spi-1.1.2.jar
m2\repository\org\jboss\arquillian\protocol\arquillian-protocol-servlet\1.1.0.Final\arquillian-protocol-servlet-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\container\arquillian-container-spi\1.1.0.Final\arquillian-container-spi-1.1.0.Final.jar
m2\repository\org\jboss\shrinkwrap\descriptors\shrinkwrap-descriptors-api-base\2.0.0-alpha-3\shrinkwrap-descriptors-api-base-2.0.0-alpha-3.jar
m2\repository\org\jboss\shrinkwrap\descriptors\shrinkwrap-descriptors-spi\2.0.0-alpha-3\shrinkwrap-descriptors-spi-2.0.0-alpha-3.jar

The provider element indicates which JPA implementation should be used. Hibernate Entity Manager is represented by the org.hibernate.jpa.HibernatePersistenceProvider string. If not specified, the first JPA implementation that is found while bootstrapping is used.

If you have multiple JPA Implementation provider (hibernate-entity-manager,eclipse-link,objectDb, etc) in your classpath it will choose the first found JPA implementation provider if you explicitly want to use a specific one then you need to set the provider element in persistence.xml .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM