Skip to content

Instantly share code, notes, and snippets.

@craigew
craigew / TestCustomerManagement.java
Created September 28, 2013 13:49
The Customer test
package com.craigew.service;
import com.craigew.entity.Address;
import com.craigew.entity.Customer;
import junit.framework.Assert;
import org.junit.Test;
import javax.persistence.EntityNotFoundException;
import java.util.List;
@craigew
craigew / CustomerManagementService.java
Created September 28, 2013 13:46
Query methods on Customer
public List<Customer> returnAllCustomers() {
return queryString("SELECT e FROM Customer e");
}
public List<Customer> returnCustomersForACountry(String country) {
return queryString("SELECT e FROM Customer e WHERE e.residentialAddress.country='" + country + "'");
}
@craigew
craigew / DataAccess.java
Created September 28, 2013 13:44
Method to allow for query on DataAccess
protected List<T> queryString(String sql){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("JPAIntroduction");
EntityManager em = factory.createEntityManager();
List<T> results= em.createQuery(sql).getResultList();
em.close();
factory.close();
return results;
}
@craigew
craigew / Customer.java
Created September 28, 2013 13:35
Reference to address
@OneToOne(cascade = CascadeType.ALL, optional=false)
@JoinColumn(name="RESIDENTIAL_ADDRESS_ID")
private Address residentialAddress;
@OneToOne(cascade = CascadeType.ALL, optional=true)
@JoinColumn(name="POSTAL_ADDRESS_ID")
private Address postalAddress;
@craigew
craigew / persistence.xml
Created September 28, 2013 13:32
Address entry in persistence.xml
<class>com.craigew.entity.Address</class>
@craigew
craigew / Address.java
Created September 28, 2013 13:28
The Address entity
package com.craigew.entity;
import javax.persistence.Entity;
@Entity
public class Address extends BaseEntity{
private String addressLine1;
private String addressLine2;
private String suburb;
private String postalCode;
@craigew
craigew / CustomerManagementService.java
Created September 22, 2013 13:03
Simple service class
public class CustomerManagementService extends DataAccess<Customer> {
public long createCustomer(Customer customer) {
return add(customer);
}
public boolean updateCustomer(Customer customer) {
update(customer);
return true;
}
@craigew
craigew / DataAccess.java
Created September 22, 2013 13:01
Helper class to hide the JPA scaffolding
public class DataAccess<T extends BaseEntity> {
private Class<T> entityClass;
protected long add(T object){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("JPAIntroduction");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
em.persist(object);
em.getTransaction().commit();
long id=object.getId();
@craigew
craigew / persistence.xml
Created September 22, 2013 12:57
persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
version="1.0">
<persistence-unit name="JPAIntroduction" transaction-type="RESOURCE_LOCAL">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class>com.craigew.entity.Customer</class>
<class>com.craigew.entity.BaseEntity</class>
<properties>
<property name="openjpa.ConnectionURL" value="jdbc:oracle:thin:@192.168.0.9:1521/xe"/>
<property name="openjpa.ConnectionDriverName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="openjpa.ConnectionUserName" value="dev"/>
@craigew
craigew / BaseEntity.java
Created September 22, 2013 12:56
The BaseEntity extended by all entity classes
@MappedSuperclass
public class BaseEntity implements Identifier{
@Id
@GeneratedValue(strategy= GenerationType.SEQUENCE, generator="id_sequence_gen")
@SequenceGenerator(name="id_sequence_gen", sequenceName="id_sequence")
private long id;
public long getId() {