Skip to content

Instantly share code, notes, and snippets.

@craigew
craigew / pom.xml
Created September 22, 2013 11:49
OpenJPA enhancer
<plugin>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-maven-plugin</artifactId>
<version>2.2.0</version>
<configuration>
<includes>**/entities/*.class</includes>
<excludes>**/entities/XML*.class</excludes>
<addDefaultConstructor>true</addDefaultConstructor>
<enforcePropertyRestrictions>true</enforcePropertyRestrictions>
</configuration>
@craigew
craigew / pom.xml
Created September 22, 2013 11:55
OpenJPA dependency
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-all</artifactId>
<version>2.1.1</version>
</dependency>
@craigew
craigew / pom.xml
Created September 22, 2013 11:56
Example of profiles for dev and release
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.liquibase</groupId>
@craigew
craigew / TestClientManagement.java
Created September 22, 2013 12:50
JPA Unit test
public class TestClientManagement {
@Test
public void should_persist_a_customer() {
Customer customer = new Customer("John", "Doe", "123456", 36);
long id=new CustomerManagementService().createCustomer(customer);
Assert.assertEquals("Id is not was expected",5,id);
}
@Test
@craigew
craigew / Customer.java
Created September 22, 2013 12:52
The customer entity
@Entity
public class Customer extends BaseEntity{
private String name;
private String surname;
private String identity_number;
private int age;
public Customer(String name, String surname, String identity_number, int age) {
this.name = name;
this.surname = surname;
@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() {
@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 / 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 / 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 / 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;