목록으로

기술 노트

[JPA] JPA란?

JPA란? Java Persistence API(JPA)는 자바 플랫폼에서 객체-관계 매핑(ORM)을 제공하는 표준 API 이다. ORM은 객체 관계 매핑을 의미하고 객체와 관계형 데이터베이스의 엔티티를 매핑하는 기술을 말한다. JPA의 주요 구성 요소1. 엔티티 Entity - 데이터베이스 테이블에 매핑되는 자바 클래스@Entitypublic class User…

2024. 07. 10.0

JPA란?

Java Persistence API(JPA)는 자바 플랫폼에서 객체-관계 매핑(ORM)을 제공하는 표준 API 이다.

ORM은 객체 관계 매핑을 의미하고 객체와 관계형 데이터베이스의 엔티티를 매핑하는 기술을 말한다.

JPA의 주요 구성 요소

  1. 엔티티 Entity - 데이터베이스 테이블에 매핑되는 자바 클래스
@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;
}
  1. 엔티티 매니저 Entity Manager - 엔티티 인스턴스를 생성, 조회, 수정, 삭제 하는데 사용되는 인터페이스로 엔티티의 생명주기를 관리

엔티티 매니저는 엔티티 매니저 팩토리를 통해 생성된다.

EntityManagerFactory emf = Persistence.createEntityManagerFactory("example-unit");
EntityManager em = emf.createEntityManager();
  1. 영속성 컨텍스트 Persistence Context - 엔티티 매니저가 관리하는 엔티티 인스턴스의 집합으로 엔티티의 상태 변화를 추적하고 데이터베이스와 동기화
  1. JPQL Java Persistence Query Language - 객체 지향 쿼리 언어로 SQL과 유사하지만 엔티티 객체를 대상으로 함
List<User> users = em.createQuery("SELECT u FROM User u WHERE u.name = :name", User.class)
                     .setParameter("name", "John Doe")
                     .getResultList();

JPA의 장점

  1. 데이터베이스 독립성 - 특정 데이터베이스에 종속되지 않고 다양한 데이터베이스와 호환, 동일한 메소드로 여러 데이터베이스에서 동일한 기능 수행
// 생성
em.persist(newUser);

// 조회
User user = em.find(User.class, 1L);

// 수정
user.setEmail("newemail@example.com");
em.merge(user);

// 삭제
em.remove(user);
  1. 생산성 향상 - SQL 쿼리를 작성하지 않아도 데이터베이스 작업을 수행할 수 있음
  1. 유지보수성 향상 - 기존 데이터베이스 관리에서 릴레이션이나 애트리뷰트의 속성이 바뀌면 SQL 쿼리도 바뀌어야 했던 반면에 JPA를 사용하면 엔티티 변수만 수정하면 해결 됨 - ORM이 자동으로 매핑해주기 때문
  1. 트랜잭션 관리 - 트랜잭션이 이루어져야 하는 부분을 쉽게 관리할 수 있어 데이터 일관성이 보장됨
em.getTransaction().begin(); // 트랜잭션 시작
em.persist(newUser); // 트랜잭션 내의 코드
// 수행
em.getTransaction().commit(); // 트랜잭션 커밋

댓글 0

loading comments...

[JPA] JPA란?