Datenbank-Einstellungen in persistence.xml nicht verwendet

Ich bin neu in JPA und zu versuchen, zu lehren Sie mich, ich bin die Einrichtung eines kleinen web-Anwendung und den Einsatz auf Glassfish 3.1.

JPA funktioniert, wenn ich beziehen sich auf eine JNDI-Datenquelle in persistence.xml wie zum Beispiel diese:

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1_0.xsd"
             version="1.0">
    <persistence-unit name="foo" transaction-type="JTA">
        <jta-data-source>jdbc/foo</jta-data-source>
        <class>my.app.Foo</class>
    </persistence-unit>
</persistence>

Aber soweit ich das verstanden habe, soll es möglich sein, um alle meine Datenbank-Verbindung Einstellungen in den Eigenschaften in persistence.xml. Dies ist möglicherweise nicht gute Praxis, aber es scheint, wie es könnte nützlich sein, wenn ich nur Experimentieren, und vielleicht während der unit-Tests.

Allerdings, wenn ich Folgen Sie den Beispielen, die ich gefunden haben für diese, persistence.xml scheint zu sein, einfach ignoriert und stattdessen der Standard-container-managed-DataSource jndi/__default verwendet wird. Dies ist einer Derby-Instanz nicht ausgeführt wird.

Habe ich versucht, diese Datei auf eine Kurzfristige in-memory-Derby-Instanz:

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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"
             version="2.0">
    <persistence-unit name="foo" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>my.app.Foo</class>
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:NxtMv;create=true"/>
            <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
            <property name="javax.persistence.jdbc.user" value=""/>
            <property name="javax.persistence.jdbc.password" value=""/>
            <property name="eclipselink.ddl-generation" value="create-tables"/>
            <property name="eclipselink.ddl-generation.output-mode" value="database" />
            <property name="eclipselink.logging.level" value="INFO"/>
        </properties>
    </persistence-unit>
</persistence>

Habe ich auch versucht, diese für einen PostgreSQL-server (was funktioniert, wenn der Zugriff über JNDI):

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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"
             version="2.0">
    <persistence-unit name="foo" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>my.app.Foo</class>
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/foo"/>
            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
            <property name="javax.persistence.jdbc.user" value="myuser"/>
            <property name="javax.persistence.jdbc.password" value="secret"/>
            <property name="eclipselink.ddl-generation" value="create-tables"/>
            <property name="eclipselink.ddl-generation.output-mode" value="database" />
            <property name="eclipselink.logging.level" value="INFO"/>
        </properties>
    </persistence-unit>
</persistence>

Wahrscheinlich gibt es einige irrelevante Reste in den Dateien, die sich angesammelt hat während meiner unzähligen versuchen und Wiederholungen.

Was vermisse ich hier?

InformationsquelleAutor Coder Doe | 2011-03-01
Schreibe einen Kommentar