JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx ·...

23
JPA Cart 1. Open the NetBeans IDE 2. Choose File → New Project 3. Choose Java from the Categories menu on the left and choose Java Application from the Projects menu on the right and click “Next”

Transcript of JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx ·...

Page 1: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

JPA Cart

1. Open the NetBeans IDE

2. Choose File → New Project

3. Choose Java from the Categories menu on the left and choose Java

Application from the Projects menu on the right and click “Next”

Page 2: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

7. In order to save our objects to the database, we need to make sure

we have a database to save them in.

1. Click on the Services pane in the upper-left of the NetBeans IDE and expand the Databases node.

2. Right-click the Java DB service and click the “Start Server” menu item. This will start the Java DB engine that comes bundled with NetBeans.

Page 3: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

3. Right-click the Java DB service again and choose the “Create Database” menu item.4. In the Create Java DB Database dialog, enter myfirstjpa as the database name and enter app for both the user name and password

You should now see a new database named myfirstjpa in the database list.

Page 4: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

7. Right-click on the JPACart project node and choose New → Entity

Class from the context menu.

Page 5: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

8. Enter Customer as the Class Name and entities as the Package.

You will also see a warning that a Persistence Unit must be created.

The persistence unit defines some details for JPA such as the data

source for the database. Click the “Create Persistence Unit”

button to create the persistence unit.

9. In the Create Persistence Unit dialog, name the new persistence

unit PU1 and set the persistence provider to TopLink(default) and

leave the Table Generation Strategy on “Create.”

Page 6: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

10. In the Data Source drop-down menu, choose the New Data Source

option to create a new data source.

11. Click “Finish” to complete the creation of the Customer entity.

12. Create the Order entity as above.

13. Add the derbyclient.jar into the library

Enter into the website :

http://www.java2s.com/Code/Jar/DEF/Downloadderbyclientjar.htm

and download the derbyclient.jar

Right click the library and choose the Add Jar file.

14. Create Client file.

Client.java

package client;

Page 7: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

import javax.persistence.EntityManager;

import javax.persistence.Persistence;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Query;

import java.util.Collection;

import java.util.List;

import entity.Customer;

import entity.Order;

public class Client {

private static EntityManagerFactory emf;

private static EntityManager em;

public static void main(String[] args) {

// Create EntityManagerFactory for persistent unit named

"pu1"

// to be used in this test

Page 8: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

emf = Persistence.createEntityManagerFactory("pu1");

// Persist all entities

createTransactionalEntityManager();

System.out.println("Inserting Customer and Orders... " +

testInsert());

closeTransactionalEntityManager();

// Test query and navigation

createEntityManager();

System.out.println("Verifying that all are inserted... " +

verifyInsert());

closeEntityManager();

// Get a detached instance in a new EntityManager

createEntityManager();

Customer c = findCustomer("Joe Smith");

closeEntityManager();

// Remove all entities

createTransactionalEntityManager();

Page 9: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

System.out.println("Removing all... " + testDelete(c));

closeTransactionalEntityManager();

// Query the results

createEntityManager();

System.out.println("Verifying that all are removed... " +

verifyDelete());

closeEntityManager();

}

private static String testInsert() {

// Create new customer

Customer customer0 = new Customer();

customer0.setId(1);

customer0.setName("Joe Smith");

// Persist the customer

em.persist(customer0);

// Create 2 orders

Page 10: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

Order order1 = new Order();

order1.setId(100);

order1.setAddress("123 Main St. Anytown, USA");

Order order2 = new Order();

order2.setId(200);

order2.setAddress("567 1st St. Random City, USA");

// Associate orders with the customer. The association

// must be set on both sides of the relationship: on the

// customer side for the orders to be persisted when

// transaction commits, and on the order side because it

// is the owning side.

customer0.getOrders().add(order1);

order1.setCustomer(customer0);

customer0.getOrders().add(order2);

order2.setCustomer(customer0);

Page 11: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

return "OK";

}

private static String verifyInsert() {

Customer c = findCustomer("Joe Smith");

Collection<Order> orders = c.getOrders();

if (orders == null || orders.size() != 2) {

throw new RuntimeException("Unexpected number of

orders: "

+ ((orders == null)? "null" : "" + orders.size()));

}

return "OK";

}

private static String testDelete(Customer c) {

// Merge the customer to the new persistence context

Customer c0 = em.merge(c);

// Delete all records.

Page 12: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

em.remove(c0);

return "OK";

}

private static String verifyDelete() {

Query q = em.createQuery("select c from Customer c");

List results = q.getResultList();

if (results == null || results.size() != 0) {

throw new RuntimeException("Unexpected number of

customers after delete");

}

q = em.createQuery("select o from Order o");

results = q.getResultList();

if (results == null || results.size() != 0) {

throw new RuntimeException("Unexpected number of

orders after delete");

}

Page 13: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

return "OK";

}

private static Customer findCustomer(String name) {

Query q = em.createQuery("select c from Customer c where

c.name = :name");

q.setParameter("name", name);

return (Customer)q.getSingleResult();

}

private static void createTransactionalEntityManager() {

// Create a new EntityManager

em = emf.createEntityManager();

// Begin transaction

Page 14: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

em.getTransaction().begin();

}

private static void closeTransactionalEntityManager() {

// Commit the transaction

em.getTransaction().commit();

// Close this EntityManager

em.close();

}

private static void createEntityManager() {

// Create a new EntityManager

em = emf.createEntityManager();

Page 15: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

}

private static void closeEntityManager() {

// Close this EntityManager

em.close();

}

}

Customer.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package entity;

import java.io.Serializable;

import javax.persistence.*;

Page 16: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

import static javax.persistence.CascadeType.*;

import java.util.Collection;

import java.util.ArrayList;

@Entity

public class Customer implements Serializable {

private int id;

private String name;

private Collection<Order> orders = new ArrayList<Order>();

@Id

public int getId() {

Page 17: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@OneToMany(cascade=ALL, mappedBy="customer")

public Collection<Order> getOrders() {

return orders;

Page 18: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

}

public void setOrders(Collection<Order> newValue) {

this.orders = newValue;

}

}

Order.java

package entity;

import javax.persistence.*;

@Entity

@Table(name="ORDER_TABLE")

public class Order {

Page 19: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

private int id;

private String address;

private Customer customer;

@Id

@Column(name="ORDER_ID")

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

@Column(name="SHIPPING_ADDRESS")

Page 20: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

@ManyToOne()

@JoinColumn(name="CUSTOMER_ID")

public Customer getCustomer() {

return customer;

}

public void setCustomer(Customer customer) {

this.customer = customer;

Page 21: JPA Cart - Kennesaw State Universityksuweb.kennesaw.edu/~kqian/swe4633(fall)/JPA cart new.docx · Web viewJPA Cart Open the NetBeans IDE Choose File → New Project Choose Java from

}

}

Run the Project and you will see the following.