18 June 2014

Introduction to JPA

            The Java Persistence API provides Java developers with an object/relational mapping facility for managing relational data in Java applications. This API has borrowed many of the concepts and standards from leading persistence frameworks like Toplink, Eclipselink and Hibernate. One of the great benefits of JPA is that it is an independent API and can nicely integrate with J2EE as well as J2SE applications. Java Persistence consists of four areas:
·         The Java Persistence API
·         The query language
·         The Java Persistence Criteria API
·         Object/relational mapping metadata

Employee.java
package org.metadata.jee.jpa.entities;

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

@Entity
@Table(name = "EMP_TBL")
public class Employee implements Serializable {
      @Id
      private long id;
      @Column(name = "EMP_NAME")
      private String name;

      public long getId() {
            return id;
      }

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

      public String getName() {
            return name;
      }

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

EmployeeTest.java
package org.metadata.jee.jpa.entities;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class EmployeeTest {
      private EntityManagerFactory emf;

      public EmployeeTest() {
            emf = Persistence.createEntityManagerFactory("METADATA_JPA");
      }

      public String insert() {
            EntityManager em = emf.createEntityManager();
            // Begin Transaction
            em.getTransaction().begin();

            Employee employee = new Employee();
            employee.setId(1);
            employee.setName("Mr Jone");

            // Insert employee to database
            em.persist(employee);

            // Commit Transaction
            em.getTransaction().commit();
            return "OK";
      }

      public String update(Employee employee) {
            EntityManager em = emf.createEntityManager();
            // Begin Transaction
            em.getTransaction().begin();

            employee.setName("Mr Smith");

            // Update employee to database
            em.merge(employee);

            // Commit Transaction
            em.getTransaction().commit();
            return "OK";
      }

      public Employee find(long id) {
            EntityManager em = emf.createEntityManager();
            // Find employee from database
            Employee employee = em.find(Employee.class, id);
            return employee;
      }

      public String delete(Employee employee) {
            EntityManager em = emf.createEntityManager();
            // Begin Transaction
            em.getTransaction().begin();

            // Delete employee to database
            Employee margedEmployee = em.merge(employee);
            em.remove(margedEmployee);

            // Commit Transaction
            em.getTransaction().commit();
            return "OK";
      }

      public static void main(String[] args) {
            EmployeeTest employeeTest = new EmployeeTest();
            String status = employeeTest.insert();
            if (status.equals("OK")) {
                  System.out.println("Insert Employee test is success.");
            }
            Employee employee = employeeTest.find(1);
            if (employee != null) {
                  System.out.println("Find Employee test is success.");
            }
            status = employeeTest.update(employee);
            if (status.equals("OK")) {
                  System.out.println("Update Employee test is success.");
            }
            status = employeeTest.delete(employee);
            if (status.equals("OK")) {
                  System.out.println("Delete Employee test is success.");
            }
      }
}


persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
      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_2_0.xsd">
  <persistence-unit name="METADATA_JPA" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
      <class>org.metadata.jee.jpa.entities.Employee</class>
    <properties>
      <property name="javax.persistence.jdbc.url"          value="jdbc:mysql://localhost:3306/metadatajpa"/>
      <property name="javax.persistence.jdbc.user" value="metadatajpa"/>
        <property name="javax.persistence.jdbc.password" value="metadatajpa"/>
      <property name="javax.persistence.jdbc.driver"      value="com.mysql.jdbc.Driver"/>     
    </properties>
  </persistence-unit>
</persistence>

create.sql
CREATE TABLE EMP_TBL (
      ID BIGINT NOT NULL,
      EMP_NAME VARCHAR(255),
      PRIMARY KEY (ID)
);



No comments:

Post a Comment

Like us on Facebook