File: Address.java
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Address implements java.io.Serializable {
private int id;
private String street;
private String city;
private String state;
private String zip;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
}
File: CreditCard.java
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
@Entity
public class CreditCard implements java.io.Serializable {
private int id;
private Date expirationDate;
private String number;
private String nameOnCard;
private String creditOrganization;
private Customer customer;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getExpirationDate() {
return expirationDate;
}
public void setExpirationDate(Date date) {
expirationDate = date;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getNameOnCard() {
return nameOnCard;
}
public void setNameOnCard(String name) {
nameOnCard = name;
}
public String getCreditOrganization() {
return creditOrganization;
}
public void setCreditOrganization(String org) {
creditOrganization = org;
}
@OneToOne(mappedBy = "creditCard")
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
}
File: Cruise.java
import java.util.ArrayList;
import java.util.Collection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
@Entity
public class Cruise implements java.io.Serializable {
private int id;
private String name;
private Ship ship;
private Collection reservations = new ArrayList();
public Cruise() {
}
public Cruise(String name, Ship ship) {
this.name = name;
this.ship = ship;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToOne
public Ship getShip() {
return ship;
}
public void setShip(Ship ship) {
this.ship = ship;
}
@OneToMany(mappedBy = "cruise")
public Collection getReservations() {
return reservations;
}
public void setReservations(Collection res) {
reservations = res;
}
}
File: Customer.java
import java.util.ArrayList;
import java.util.Collection;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
@Entity
public class Customer implements java.io.Serializable {
@Id
@GeneratedValue
private int id;
private String firstName;
@OneToOne(cascade = { CascadeType.ALL })
@JoinColumn(name = "ADDRESS_ID")
private Address address;
@OneToMany(cascade = { CascadeType.ALL })
@JoinColumn(name = "CUSTOMER_ID")
private Collection phoneNumbers = new ArrayList();
@OneToOne(cascade = { CascadeType.ALL })
private CreditCard creditCard;
@ManyToMany(mappedBy = "customers")
private Collection reservations = new ArrayList();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public CreditCard getCreditCard() {
return creditCard;
}
public void setCreditCard(CreditCard card) {
creditCard = card;
}
public Collection getPhoneNumbers() {
return phoneNumbers;
}
public void setPhoneNumbers(Collection phones) {
this.phoneNumbers = phones;
}
public Collection getReservations() {
return reservations;
}
public void setReservations(Collection reservations) {
this.reservations = reservations;
}
}
File: Phone.java
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Phone implements java.io.Serializable {
private int id;
private String number;
private byte type;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public byte getType() {
return type;
}
public void setType(byte type) {
this.type = type;
}
}
File: Reservation.java
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
@Entity
public class Reservation implements java.io.Serializable {
private int id;
private Cruise cruise;
private Set customers = new HashSet();
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@ManyToOne
@JoinColumn(name = "CRUISE_ID")
public Cruise getCruise() {
return cruise;
}
public void setCruise(Cruise cruise) {
this.cruise = cruise;
}
@ManyToMany
@JoinTable(name = "RESERVATION_CUSTOMER", joinColumns = { @JoinColumn(name = "RESERVATION_ID") }, inverseJoinColumns = { @JoinColumn(name = "CUSTOMER_ID") })
public Set getCustomers() {
return customers;
}
public void setCustomers(Set customers) {
this.customers = customers;
}
}
File: Ship.java
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Ship implements java.io.Serializable {
private int id;
private String name;
public Ship() {
}
public Ship(String name) {
this.name = name;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
File: Helper.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
public class Helper {
public static void checkData() throws Exception {
Class.forName("org.hsqldb.jdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:hsqldb:data/tutorial", "sa", "");
Statement st = conn.createStatement();
ResultSet mrs = conn.getMetaData().getTables(null, null, null, new String[] { "TABLE" });
while (mrs.next()) {
String tableName = mrs.getString(3);
System.out.println("\n\n\n\nTable Name: "+ tableName);
ResultSet rs = st.executeQuery("select * from " + tableName);
ResultSetMetaData metadata = rs.getMetaData();
while (rs.next()) {
System.out.println(" Row:");
for (int i = 0; i < metadata.getColumnCount(); i++) {
System.out.println(" Column Name: "+ metadata.getColumnLabel(i + 1)+ ", ");
System.out.println(" Column Type: "+ metadata.getColumnTypeName(i + 1)+ ": ");
Object value = rs.getObject(i + 1);
System.out.println(" Column Value: "+value+"\n");
}
}
}
}
}
File: Main.java
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
public class Main {
static EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPAService");
static EntityManager em = emf.createEntityManager();
public static void main(String[] a) throws Exception {
em.getTransaction().begin();
em.getTransaction().commit();
em.close();
emf.close();
Helper.checkData();
}
}
File: persistence.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence" version="1.0">