JPA Example

In the last chapter we have discussed the fundamental concepts of Java Persistence API. Now let use see a JPA Example. It simply inserts a record into an existing database and then fetching the inserted data using JPA. We are  starting our discussion with creation of database onwards.We are using Apache  OpenJPA as JPA  implementation.

Tools & Software needed

1)Eclipse Indigo – Download Link

2)MySQL Server 5.x – Download Link

3)SQLYog Community edition – Download Link

4)Java EE SDK 1.6 – Download Link

5)Open JPA Library – Download Link

JPA  Example

The example we are discussing here inserts an object data into database and then reading the data.We need to have all the tools ready in our development environment . Lets start the discussion with creation of database.

Step 1) Create Database ‘JPASAMPLEDB’ either from MySQL  command line client  or from SQLYog.

CREATE DATABASE `JPASAMPLEDB` ;

Step2)Create table ‘STUDENT’ int  ‘JPASAMPLEDB’.

USE JPASAMPLEDB;

CREATE TABLE `STUDENT` (

  `id` INT(11) NOT NULL,

  `name` VARCHAR(50) NOT NULL,

  `level` VARCHAR(20) NOT NULL,

  PRIMARY KEY (`id`)

)

Step 3)Open eclipse in a suitable workspace.

Step 4)Create a JPA project in eclipse(File–>New–>JPA Project).

createproject

Step 5)Press Next  button .Press Next again for the new window . Now we need to configure the JPA Library. We  are configuring the JPA libraries already downloaded. Also we need to include the MySQL connector jar to the library.Click on the Manage libraries icon highlighted.

configLibrary

Step 6) Press New then give suitable name to the library.Then press OKconfiglib_jar

Step 7 )Now we need to add the jar files to library.We are adding the openjpa-all-2.2.2  and all dependent jars in the lib folder of open JPA Binary .Also we need to include the MySQL Connector Jar.

addjar1

Step 8)Add jars and press OK

addjar2

The jar files included in the project are :

mysql-connector-java-5.0.8-bin

openjpa-all-2.2.2

asm-3.2

commons-beanutils-1.8.3

commons-collections-3.2.1

commons-dbcp-1.4

commons-lang-2.4

commons-logging-1.0.4

commons-pool-1.5.4

derby-10.8.2.2

geronimo-jms_1.1_spec-1.1.1

geronimo-jpa_2.0_spec-1.1

geronimo-jta_1.1_spec-1.1.1

geronimo-validation_1.0_spec-1.1

org.apache.bval.bundle-0.3-incubating

serp-1.14.1

Most of the jar files listed above are not needed in this particular  example. We will be doing complex examples in the coming chapters. There we need some of these jar files.

Step 9)Now select the check box against the newly created library and press  Finish

addjar3

Step 10 )Create packages in src folder of project.

Step 11)Create an entity class Student.java . The mappings are done  in entity class  itself. Primary key generation strategy is AUTO

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity(name = "Student")
@Table(name="student")
public class Student implements Serializable {

/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
private String level;

public Student() {

}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

@Column(name = "name")
public void setName(String name) {
this.name = name;
}

public String getLevel() {
return level;
}

@Column(name = "level")
public void setLevel(String level) {
this.level = level;
}

public String toString(){
return "ID = "+getId() + " ; Name : = "+getName() +" ; Level : = "+getLevel();
}

}

Step 12)Create a class to insert and read data using JPA.The class has two methods other than main , one is to insert data and the other  is to read the inserted data.Both transactions are done with same EntityManager instance.

import java.util.Iterator;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;

import com.jpa.entity.Student;

public class JPASample {
private EntityManager entitymanager;

public static void main(String[] args) {

JPASample sample = new JPASample();
sample.getEntityManager();
sample.doInsert();
sample.doRead();

}

public void getEntityManager() {
EntityManagerFactory entityManagerFactory = Persistence
.createEntityManagerFactory("OpenJPASample");
entitymanager = entityManagerFactory.createEntityManager();
}

public void doInsert() {
if (null != entitymanager) {
EntityTransaction transaction = entitymanager.getTransaction();
Student student = new Student();
student.setName("Noby");
student.setLevel("H");
transaction.begin();
entitymanager.persist(student);
transaction.commit();
System.out.println("The object is persisted...");
}
}

public void doRead() {
if (null != entitymanager) {
EntityTransaction readTransaction = entitymanager.getTransaction();
readTransaction.begin();
Query query = entitymanager
.createQuery("select student FROM Student student");
List list = query.getResultList();
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Student student = (Student) iterator.next();
System.out.println("Student Details : " + student);
}
readTransaction.commit();

}
}
}

Step 13) Edit the persistence.xml in src\META-INF\persistence.xml

User name , Password , and other configuration properties needs to be  provided.

org.apache.openjpa.persistence.PersistenceProviderImpl com.jpa.entity.Student

Step 14)Now run the JPASample.java

Output

The object is persisted…

Student Details : ID = 1 ; Name : = Noby ; Level : = H

See Related Discussions

JPA Overview

The find() method in JPA

Updating a record using JPA

JPA Delete Example

JPQL

JPQL – Update Query Example

JPQL Delete Query Example

Caching

Overview to JPA Caching

Locking in JPA

Locking in JPA

Relational Mappings in JPA

One To One Mapping in JPA

One To Many mapping in JPA

Many To Many Mapping in JPA

Many To One Mapping in JPA