===== JPA Example =====
Hozzunk létre egy dinamikus web projektet JPA néven.
1.) Hozzuk létre a persistence.xml nevű file-t a src/META-INF könyvtárban a következő tartalommal:
java:jboss/datasources/ExampleDS
2.) Készítsük el az org.me.CustomerManager class-t:
package org.me;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateful;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
@Stateless
public class CustomerManager {
@PersistenceContext(unitName = "customers")
EntityManager em;
public void createCustomer(String name, String address) {
Customer customer = new Customer(name, address);
em.persist(customer);
}
public List listCustomers() {
String q = "SELECT b from " + Customer.class.getName() + " b";
Query query = em.createQuery(q);
return query.getResultList();
}
}
3. Készítsük el a class org.me.Customer class-t
package org.me;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity(name = "customer")
public class Customer implements Serializable {
@Id
private String name;
private String address;
public Customer() {
}
public Customer(String name, String address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
4.) Készítsünk egy org.me.MyServlet class-t.
package org.me;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
@EJB
private CustomerManager cm;
public MyServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String method = request.getParameter("method");
String name = request.getParameter("name");
String address = request.getParameter("address");
PrintWriter writer = response.getWriter();
writer.print("");
if(method.equalsIgnoreCase("create")) {
cm.createCustomer(name, address);
writer.print("result = OK, saved");
} else if(method.equalsIgnoreCase("list")) {
List persons = cm.listCustomers();
for (Customer customer : persons) {
writer.print("customer.name=" + customer.getName() + " address=" + customer.getAddress() + "");
}
}
writer.print(" ");
writer.flush();
writer.close();
}
}
5.) Deployment után a kipróbálásként hozzunk létre 3 customer példányt.
http://localhost:8080/JPA/MyServlet?method=create&name=john1&address=miskolc
http://localhost:8080/JPA/MyServlet?method=create&name=john2&address=miskolc
http://localhost:8080/JPA/MyServlet?method=create&name=john3&address=miskolc
**Mentett elemek listázása:**
http://localhost:8080/JPA/MyServlet?method=list&name=john1&address=miskolc
==== Gyakorlatok ====
- Töltsük le a DB nézegető eszközt: {{tanszek:oktatas:informatikai_rendszerek_epitese:h2console.zip| h2console.zip}}. Tömörítsük ki ide: ..\jbdevstudio\runtimes\jboss-eap\standalone\deployments\ és futtassuk: http://localhost:8080/h2console/
* Connection string: jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
* User/Pass: sa/sa
- Készítsünk egy html form-ot (index.html) a customer-ek manipulálására
egy lehetséges megoldás:
Insert title here
- Készítsünk egy megoldást a mentett customerek törlésére. A lekérdező nyelv leírása itt található: http://docs.oracle.com/javaee/6/tutorial/doc/bnbtl.html#bnbtm
Egy lehetséges megoldás:
public int delete(String name) {
String q = "DELETE from " + Customer.class.getName()
+ " b WHERE b.name = '" + name + "'";
Query query = em.createQuery(q);
return query.executeUpdate();
}