Hallo,
ich bin mehrere Jahre raus aus der Programmierung, vor allem aus der Java-Welt. Ich will mich aber gerade für mein Team, dass ich betreue, wieder mal mit einigen Themen beschäftigen.
Ich möchte eine kleine Java-EE Anwendung bauen, die aus mehreren Schichten besteht.
Ich habe mit den JPA-Entities angefangen(Meine PersistenceSchicht. Ob ein Objekt in einer "DERBY" DB gespeichert werden kann, wollte ich mittels Unittest testen, doch leider bekomme ich folgende Fehlermeldung:
Exception Description: Unable to acquire a connection from driver [null], user [null] and URL [null]. Verify that you have set the expected driver class and URL. Check your login, persistence.xml or sessions.xml resource. The jdbc.driver property should be set to a class that is compatible with your database platform
Ich Benutze Eclipse. Mit Eclipse selber kann ich mich auf das DBMS und die DB schalten, dass ist kein Problem.
Meine Anwendung sieht wie folgt aus:
Ja ich weiß, es ist kein guter Unit-Test, aber ich wollte nur schauen, ob eine Verbindung aufgebaut wird, und ob ein EIntrag geschrieben wird. Ich hätte auch einfach eine Main schreiben können, um den gleichen Effekt zu erzielen.
Was habe ich noch gemacht. Die DB läuft, ich kann mich auch mittels Eclipse auf die DB draufschalten, genau diese Einstellungen, habe ich auch für die persistence.xml verwendet. Ich habe die derbyclient.jar und derby.jar in den Clathpath eingebunden.
Was mache ich noch falsch?? Es muss doch möglich sein, diesen Unit-Test ohne tomcat-EE zu starten oder nicht???
die persistence.xml liegt im Ordner src\META-INF
Vielleicht kann mir jemand helfen
Viele Grüße
Alaska
ich bin mehrere Jahre raus aus der Programmierung, vor allem aus der Java-Welt. Ich will mich aber gerade für mein Team, dass ich betreue, wieder mal mit einigen Themen beschäftigen.
Ich möchte eine kleine Java-EE Anwendung bauen, die aus mehreren Schichten besteht.
Ich habe mit den JPA-Entities angefangen(Meine PersistenceSchicht. Ob ein Objekt in einer "DERBY" DB gespeichert werden kann, wollte ich mittels Unittest testen, doch leider bekomme ich folgende Fehlermeldung:
Exception Description: Unable to acquire a connection from driver [null], user [null] and URL [null]. Verify that you have set the expected driver class and URL. Check your login, persistence.xml or sessions.xml resource. The jdbc.driver property should be set to a class that is compatible with your database platform
Ich Benutze Eclipse. Mit Eclipse selber kann ich mich auf das DBMS und die DB schalten, dass ist kein Problem.
Meine Anwendung sieht wie folgt aus:
Java:
import java.io.Serializable;
import java.lang.String;
import javax.persistence.*;
import jakarta.persistence.DiscriminatorColumn;
import jakarta.persistence.DiscriminatorType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Inheritance;
import jakarta.persistence.InheritanceType;
/**
* Entity implementation class for Entity: Kunde
*
*/
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "Art_kunde", discriminatorType = DiscriminatorType.STRING)
public abstract class Kunde implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String nachname;
private String vorname;
private static final long serialVersionUID = 1L;
public Kunde() {
super();
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public String getNachname() {
return this.nachname;
}
public void setNachname(String nachname) {
this.nachname = nachname;
}
public String getVorname() {
return this.vorname;
}
public void setVorname(String vorname) {
this.vorname = vorname;
}
}
Java:
import java.io.Serializable;
import javax.persistence.Entity;
import jakarta.persistence.DiscriminatorValue;
/**
* Entity implementation class for Entity: Firmenkunde
*
*/
@Entity
@DiscriminatorValue("Firmenkunde")
public class Firmenkunde extends Kunde implements Serializable {
private static final long serialVersionUID = 1L;
private String IdNr;
public String getIdNr() {
return IdNr;
}
public void setIdNr(String idNr) {
IdNr = idNr;
}
public Firmenkunde() {
super();
}
}
Java:
import org.junit.Before;
import org.junit.Test;
import de.mertens.persistence.entity.Firmenkunde;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
public class KundeTest {
private EntityManager em;
@Before
public void setUp() throws Exception {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Kunde");
em = emf.createEntityManager();
}
@Test
public void speichereKunde() {
em.getTransaction().begin();
Firmenkunde fKunde = new Firmenkunde();
fKunde.setIdNr("123456");
fKunde.setVorname("Max");
fKunde.setNachname("Mustermann");
em.persist(fKunde);
em.getTransaction().commit();
em.close();
}
XML:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
<persistence-unit name="Kunde" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>de.mertens.persistence.entity.Kunde</class>
<class>de.mertens.persistence.entity.Firmenkunde</class>
<class>de.mertens.persistence.entity.Privatkunde</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/sample;create=true"/>
<property name="javax.persistence.jdbc.user" value="user"/>
<property name="javax.persistence.jdbc.password" value="user"/>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
</properties>
</persistence-unit>
</persistence>
Ja ich weiß, es ist kein guter Unit-Test, aber ich wollte nur schauen, ob eine Verbindung aufgebaut wird, und ob ein EIntrag geschrieben wird. Ich hätte auch einfach eine Main schreiben können, um den gleichen Effekt zu erzielen.
Was habe ich noch gemacht. Die DB läuft, ich kann mich auch mittels Eclipse auf die DB draufschalten, genau diese Einstellungen, habe ich auch für die persistence.xml verwendet. Ich habe die derbyclient.jar und derby.jar in den Clathpath eingebunden.
Was mache ich noch falsch?? Es muss doch möglich sein, diesen Unit-Test ohne tomcat-EE zu starten oder nicht???
die persistence.xml liegt im Ordner src\META-INF
Vielleicht kann mir jemand helfen
Viele Grüße
Alaska