본문 바로가기
강의 정리/자바 ORM 표준 JPA

1. JPA 시작하기

by 이석준석이 2020. 12. 26.

1. hibernate.dialect

  • JPA는 특정 데이터베이스에 종속되지 않는다.
  • 각 데이터베이스의 SQL 문법과 함수는 조금씩 다르다.
    • MySQL : VARCHAR
    • Oracle : VARCHAR2
  • 해당 설정을 통해서 JPA 가 어느 데이터베이스에 종속되지 않도록 설정할 수 있다.
  • 현재 강의에서는 h2를 메인으로 사용하기 때문에
    • org.hibernate.dialect.H2Dialect 로 진행한다.

2. JPA 구동 방식

구동 방식

JPA 에는 Persistence 라는 클래스가 존재한다.

  1. META-INF/persistence.xml 을 읽어서 설정 정보를 조회한다.
  2. 읽은 정보를 기반으로 EntityManagerFactory를 생성한다.
  3. 이를 기반으로 EntityManager을 생성해서 사용한다.

JPA 의 모든 데이터 변경 작업은 Transaction 내에서 작업돼야 한다.

public static void main(String[] args) {
    // Persistence 클래스에서 hello 유닛을 가져온다.
    // hello unit 이름은 persistence.xml 에 설정되 이름이다.
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");

    // entityManagerFactory 에서 entityManager 을 가져온다.
    EntityManager em = emf.createEntityManager();

    // 트랜잭션을 생성하고, 시작한다.
    EntityTransaction tx = em.getTransaction();
    tx.begin();

    /*
        실제 동작하는 코드를 작성한다.
     */

    // 트랜잭션을 커밋한다.
    tx.commit();

    em.close();

    emf.close();
}

주의점

  • DB당 하나만 생성되는 EntityManagerFactory
    • 끝날때 close() 해 줘야 커넥션 풀링이나 리소스가 release 된다.
  • EntityManager 요청당 하나
    • 쓰레드간에 절대 공유해서는 안된다.

'강의 정리 > 자바 ORM 표준 JPA' 카테고리의 다른 글

6. 고급 매핑  (0) 2020.12.29
5. 다양한 연관관계 매핑  (0) 2020.12.28
4. 연관관계 매핑 기초  (0) 2020.12.27
3. 엔티티 매핑  (0) 2020.12.27
2. 영속성 관리  (0) 2020.12.26