Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Java Persistence API (JPA) Fundamentals

Introduction

The Java Persistence API (JPA) is a specification for accessing, persisting, and managing data between Java objects and relational databases.

Key Concepts

  • Entity: A lightweight persistent domain object.
  • Entity Manager: The primary JPA interface for interacting with persistence context.
  • Persistence Context: A set of entity instances in which for a particular entity, each instance has a unique identity.
  • Entity Lifecycle: An entity can be in different states: transient, managed, detached, or removed.

Setup

To use JPA, you need to configure your project with the necessary dependencies. Below is an example of a Maven configuration:



    
        javax.persistence
        javax.persistence-api
        2.2
    
    
        org.hibernate
        hibernate-core
        5.4.30.Final
    
    
        org.hibernate
        hibernate-entitymanager
        5.4.30.Final
    

                

Basic Operations

Creating an Entity

Define an entity class using the @Entity annotation:


import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private double price;

    // Getters and Setters
}
                

CRUD Operations

Example of CRUD operations using EntityManager:


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

public class JpaExample {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-persistence-unit");
        EntityManager em = emf.createEntityManager();
        
        // Create
        em.getTransaction().begin();
        Product product = new Product();
        product.setName("Laptop");
        product.setPrice(1200.00);
        em.persist(product);
        em.getTransaction().commit();

        // Read
        Product foundProduct = em.find(Product.class, product.getId());

        // Update
        em.getTransaction().begin();
        foundProduct.setPrice(1100.00);
        em.merge(foundProduct);
        em.getTransaction().commit();

        // Delete
        em.getTransaction().begin();
        em.remove(foundProduct);
        em.getTransaction().commit();

        em.close();
        emf.close();
    }
}
                

Best Practices

  • Use a separate persistence unit for read and write operations.
  • Minimize the scope of the EntityManager.
  • Use DTOs for transferring data instead of entities.
  • Handle transactions in a consistent manner.

FAQ

What is JPA?

JPA is a Java specification for accessing, persisting, and managing data between Java objects and relational databases.

What is an Entity Manager?

An EntityManager is the primary JPA interface for interacting with the persistence context.

How do I configure JPA?

JPA can be configured using a persistence.xml file or through Java configuration.