집돌이 공대남 IT

JPA 프로그래밍 마스터하기! 초급부터 전문가까지 실습을 통한 학습(3) 본문

IT/웹개발

JPA 프로그래밍 마스터하기! 초급부터 전문가까지 실습을 통한 학습(3)

집공이 2023. 8. 16. 12:00

JPA: 객체 지향 프로그래밍의 두 번째 걸음

안녕하세요, 지난 번에 이어 JPA에 대해 계속 이야기하려 합니다. 이전 글에서는 JPA를 설정하는 방법과 기본 원리에 대해 살펴보았습니다. 이번 글에서는 엔티티 클래스를 만드는 방법과 EntityManager를 사용하여 데이터베이스 작업을 수행하는 방법에 대해 알아보겠습니다.

1. 엔티티 클래스 생성

JPA에서 중요한 개념 중 하나는 "엔티티"입니다. 엔티티는 데이터베이스에서 데이터를 표현하는 자바 클래스입니다. 이 클래스는 @Entity 어노테이션을 사용하여 정의됩니다.

다음은 예시 엔티티 클래스입니다:

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

@Entity
public class User {

    @Id
    @GeneratedValue
    private Long id;

    private String name;

    // getters and setters...
}

@Entity 어노테이션은 이 클래스가 엔티티임을 JPA에 알려줍니다. @Id@GeneratedValue 어노테이션은 id 필드가 엔티티의 기본 키(primary key)이며, 그 값이 자동으로 생성되어야 함을 나타냅니다. 이 외에도 JPA는 @Column, @Table, @OneToMany 등 다양한 어노테이션을 제공하므로, 복잡한 관계와 제약 조건을 표현할 수 있습니다.

 

2. EntityManager를 사용한 데이터베이스 작업

JPA에서는 EntityManager라는 인터페이스를 통해 데이터베이스 작업을 수행합니다. EntityManager는 엔티티를 생성, 수정, 삭제, 조회하는 API를 제공합니다. EntityManager 인스턴스는 EntityManagerFactory를 통해 생성됩니다.

다음은 EntityManager를 사용한 예시 코드입니다:

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

public class Main {

    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("myJPA");
        EntityManager em = emf.createEntityManager();

        em.getTransaction().begin();

        User user = new User();
        user.setName("John");
        em.persist(user);

        em.getTransaction().commit();

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

이 코드는 User 엔티티를 생성하고 그 엔티티를 데이터베이스에 저장합니다. 트랜잭션(transaction)은 데이터베이스 작업의 단위로, begin(), commit(), rollback() 메소드를 사용하여 제어할 수 있습니다.

JPA를 사용하면 SQL을 작성하는 대신에 이런 식으로 자바 코드로 데이터베이스 작업을 수행할 수 있습니다. 이것이 바로 객체 지향적인 방법으로 데이터를 다룰 수 있는 JPA의 매력입니다.

다음 글에서는 JPA의 고급 기능과 성능 최적화 방법에 대해 알아보겠습니다. 그럼 이번에도 즐겁게 코딩하세요!