Hallo,
ich arbeite mich gerade in JPA ein. Ich habe ein Servlet geschrieben, welches eine Email-Adresse und ein Passwort von einer Usereingabe entgegen nimmt und die Daten in einer Datenbank ablegen soll.
Die Klasse sieht so aus:
Hier ist meine Customer-Klasse
und hier ist noch meine persistence.xml
Wenn ich dies ausführe, erhalte ich keine Fehlermeldung, aber die Daten wurden nicht in der Datenbank abgelegt.
In der Konsole steht nur:
onlineshop-war was successfully deployed in 559 milliseconds.
Kann mir jemand sagen, was ich falsch mache? Ich bin in dem Bereich noch ein Anfänger.
Als Java-SE-Anwendung (also wenn der transaction-type = "RESOURCE_LOCAL" ist und den entsprechenden Anpassungen) funktioniert es jedenfalls.
Vielen Dank im Voraus.
ich arbeite mich gerade in JPA ein. Ich habe ein Servlet geschrieben, welches eine Email-Adresse und ein Passwort von einer Usereingabe entgegen nimmt und die Daten in einer Datenbank ablegen soll.
Die Klasse sieht so aus:
Java:
package siemer.onlineshop;
import java.io.IOException;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
import siemer.onlineshop.model.Customer;
/**
* Servlet implementation class RegisterServlet
*/
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@PersistenceUnit(unitName = "onlineshop-jpa")
private EntityManagerFactory emf;
@Resource
private UserTransaction ut;
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if (emf == null)
System.out.println("EMF:" + "null");
EntityManager em = emf.createEntityManager();
String email = request.getParameter("email");
String password = request.getParameter("password");
Customer customer = new Customer();
customer.setEmail(email);
customer.setPassword(password);
customer.setId(7L);
try {
ut.begin();
em.persist(customer);
ut.commit();
em.close();
} catch (NotSupportedException | SystemException | SecurityException | IllegalStateException | RollbackException
| HeuristicMixedException | HeuristicRollbackException e) {
e.printStackTrace();
}
RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");
dispatcher.forward(request, response);
}
}
Java:
package siemer.onlineshop.model;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(schema="ONLINESHOP", name="CUSTOMER")
public class Customer implements Serializable {
/**
*
*/
private static final long serialVersionUID = -2892494802019584416L;
@Id private Long id;
private String email;
private String password;
public Customer() {
}
public Customer(String email, String password) {
this.setEmail(email);
this.setPassword(password);
}
public long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Code:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" 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_1.xsd">
<persistence-unit name="onlineshop-jpa" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/__default</jta-data-source>
<class>siemer.onlineshop.model.Customer</class>
</persistence-unit>
</persistence>
Wenn ich dies ausführe, erhalte ich keine Fehlermeldung, aber die Daten wurden nicht in der Datenbank abgelegt.
In der Konsole steht nur:
onlineshop-war was successfully deployed in 559 milliseconds.
Kann mir jemand sagen, was ich falsch mache? Ich bin in dem Bereich noch ein Anfänger.
Als Java-SE-Anwendung (also wenn der transaction-type = "RESOURCE_LOCAL" ist und den entsprechenden Anpassungen) funktioniert es jedenfalls.
Vielen Dank im Voraus.