===== 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
Name:
Address:
- 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(); }