Back-End/JPA

2. JPA 시작

wisdom11 2022. 4. 3. 13:24

데이터베이스 방언

JPA는 특정 데이터베이스에 종속적이지 않은 기술이다.

→ 데이터베이스를 손쉽게 교체할 수 있다.

방언(Dialect) 이란?

  • 특정 데이터베이스만의 고유한 기능
  • 대부분의 JPA 구현체는 다양한 데이터베이스 방언 클래스를 제공하여 데이터베이스 방언을 처리해준다.
  • 예시
    • H2: org.hibrenate.dialect.H2Dialect
    • 오라클 10g: org.hibrenate.Oracle10gDialect
    • MySQL: org.hibrenate.MySQL5InnoDBDialect

 

엔티티 매니저 설정

1. 엔티티 매니저 팩토리 생성

Persistence 클래스를 사용하여 엔티티 매니저 팩토리를 생성

엔티티 매니저 팩토리는 애플리케이션 전체에서 딱 한 번만 생성하고, 공유하여 사용해야 한다.

EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");

2. 엔티티 매니저 생성

엔티티 매니저 팩토리에서 엔티티 매니저를 생성한다.

엔티티 매니저

  • 데이터베이스에 CRUD
  • 내부에 데이터베이스 커넥션을 유지하면서, 데이터베이스와 통신한다.
  • 스레드 간에 공유하거나 재사용하면 안 된다.
EntityManager em = emf.createEntityManager();

 

트랜잭션 관리

JPA에서 데이터를 변경할 때는 항상 트랜잭션 안에서 해야한다.

트랜잭션 API는 엔티티 매니저로부터 받아올 수 있다.

EntityTransaction tx = em.getTransaction();

try{
	tx.begin();
	// 비즈니스 로직 실행
	tx.commit();
} catch (Exception e){
	tx.rollback();
}

 

비즈니스 로직

em.persist(member); // 등록

member.setAge(20); // 수정

// 조회
Member findMember = em.find(Member.class, id);
List<Member> members = em.createQuery("select m from Member m", Member.class).getResultList();

// 삭제
em.remove(member);

 

JPQL

Java Persistence Query Language

엔티티 객체를 대상으로 쿼리하는 개게 지향 쿼리 언어

사용법

em.createQuery(JPQL, 반환 타입).getResultList();

→ 자세한 내용은 10장

 

 

 

 

 

 

728x90