Hibernate und MySQL testen

Diskutiere Hibernate und MySQL testen im Data Tier Forum; Hallo Leute, ich bin ein Newbie in Sachen Java und Hibernate bzw. MysqlDB. Ich habe bisher meinen JBoss AS7 via standalone.xml konfiguriert:...

  1. braindump23
    braindump23 Neues Mitglied
    Hallo Leute,

    ich bin ein Newbie in Sachen Java und Hibernate bzw. MysqlDB.
    Ich habe bisher meinen JBoss AS7 via standalone.xml konfiguriert:
    Code (Text):
           <subsystem xmlns="urn:jboss:domain:datasources:1.0">
                <datasources>
                    <datasource jta="true" jndi-name="java:jboss/datasources/rbowDB" pool-name="rbowDB" enabled="true" use-java-context="true" use-ccm="true">
                        <connection-url>jdbc:mysql://localhost:3306/rbowDB</connection-url>
                        <driver>mysql-connector-java-5.1.26-bin.jar</driver>
                        <pool>
                            <max-pool-size>100</max-pool-size>
                            <prefill>true</prefill>
                            <use-strict-min>false</use-strict-min>
                            <flush-strategy>FailingConnectionOnly</flush-strategy>
                        </pool>
                        <security>
                            <user-name>dbuser</user-name>
                            <password>dbuser1</password>
                        </security>
                    </datasource>
                    <drivers>
                        <driver name="mysql-connector-java-5.1.26-bin.jar" module="com.mysql">
                            <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                        </driver>
                    </drivers>
                </datasources>
    Desweiteren habe ich dann in meinem Eclipse-Projekt die persistence.xml wie folgt konfiguriert:
    Code (Text):
    <?xml version="1.0" encoding="UTF-8"?>

    <!-- Hier wird die zum JBoss zugehörige Datenbank angesprochen JBoss-Konfiguration der DB im Verzeichnis /standalone/configuration/standalone.xml -->

    <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="primary">
          <jta-data-source>java:jboss/datasources/rbow.rbowwebappDS</jta-data-source>
          <properties>
             <!-- Properties for Hibernate -->
             <property name="hibernate.hbm2ddl.auto" value="create-drop" />
             <property name="hibernate.show_sql" value="false" />
          </properties>
       </persistence-unit>
    </persistence>
    und jetzt würde ich gerne innerhalb eines Unittest mal eine Entität persisiteren um die Konfiguration zu testen.
    Code (Text):
    package end2end;

    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.Persistence;

    import org.junit.Test;

    import model.Aktion;
    import model.Konto;

    public class TestPersistence {

        private Aktion aktion = new Aktion();

        @Test
        public void testPersist() {
           
            String persistenceUnitName = "primary";
            EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName);
           
            EntityManager entityManager = entityManagerFactory.createEntityManager();
            entityManager.getTransaction().begin();
            fillAktion(aktion);
            entityManager.persist( aktion);
            entityManager.getTransaction().commit();
            entityManager.close();
        }
       
        private void fillAktion(Aktion aktion) {
            aktion.setId(1l);
            aktion.setKonto(new Konto("Max Mustermann", "Bank", "1234", "100200300"));
            aktion.setName("Max Mustermann");
        }
    }
    Was genau ist denn jetzt für den Unit-Test der String persistenceUnitName zu nehmen?
    Mache ich das so richtig, oder muss ich was anders tun?

    Die Fehlermeldung die ich bekomme ist jedenfalls:
    Code (Text):
    javax.persistence.PersistenceException: No Persistence provider for EntityManager named primary
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
        at end2end.TestPersistence.testPersist(TestPersistence.java:20)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
        at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
     
    Kann mir da ejmand weiterhelfen?

    Mfg
    Braindump
     
  2. Vielleicht hilft dir dieser Java-Kurs hier weiter --> (hier klicken)
  3. KSG9|sebastian
    KSG9|sebastian Aktives Mitglied
    Als Driver musst du den voll qualifizierten Namen der Klasse angeben.. com.mysql....Driver
    Poste mal das ganze Logfile, ich vermute der fällt davor schon auf die Nase und "primary not found" ist nur die Folge daraus..
     
  4. braindump23
    braindump23 Neues Mitglied
    Hallo,

    danke erstmal.
    das ist der gesamte Stacktrace. Den Namen welcher Klasse?

    Gruss Braindump
     
  5. braindump23
    braindump23 Neues Mitglied
    Hallo zusammen,

    mein Problem besteht immer noch. Ich habe den voll qualifizierten Pfad jetzt mal angegeben scheitere aber trotzdem.
    Kann da nochmal jemand drüberschauen?

    Code (Text):
    javax.persistence.PersistenceException: No Persistence provider for EntityManager named com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
        at end2end.TestPersistence.testPersist(TestPersistence.java:20)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
        at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
     
  6. KSG9|sebastian
    KSG9|sebastian Aktives Mitglied
    Poste Code ubd die persistence.xml...und schau dir ein Tutorial zu dem Thema an...dann sind deine Fragen beantwortet!
     
  7. braindump23
    braindump23 Neues Mitglied
    ... der Code ist doch weiter oben gepostet, die persistence.xml ist auch dabei.
    Tutorials habe ich mir angeschaut sonst wäre ich soweit gar nicht gekommen.

    Hast Du eine konkrete Vermutung oder einen Tipp?

    Mfg
    Braindump
     
  8. KSG9|sebastian
    KSG9|sebastian Aktives Mitglied
    Hab ich doch geschrieben! Du musst als Driver den Klassennamen angeben, nicht den Name der Jar!
     
  9. braindump23
    braindump23 Neues Mitglied
    Hallo,

    der Klassenname ist doch dann:
    com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
    aus der persistence.xml vgl. :
    <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>

    ... oder nicht?

    Mfg
     
  10. braindump23
    braindump23 Neues Mitglied
Die Seite wird geladen...

Hibernate und MySQL testen - Ähnliche Themen

Java Object mit Hibernate in MySQL abspeichern
Java Object mit Hibernate in MySQL abspeichern im Forum Datenbankprogrammierung
Java EE 6, eclipse, maven, jsf, hibernate, mysql
Java EE 6, eclipse, maven, jsf, hibernate, mysql im Forum Allgemeines EE
Hibernate / MySQL alias in WHERE clause
Hibernate / MySQL alias in WHERE clause im Forum Datenbankprogrammierung
Datenbank konfigurieren, JDBC, MySQL oder Hibernate
Datenbank konfigurieren, JDBC, MySQL oder Hibernate im Forum Datenbankprogrammierung
Hibernate JPA mysql db erstellen
Hibernate JPA mysql db erstellen im Forum Data Tier
Thema: Hibernate und MySQL testen