1. hibernate.dialect
- JPA는 특정 데이터베이스에 종속되지 않는다.
- 각 데이터베이스의 SQL 문법과 함수는 조금씩 다르다.
- MySQL : VARCHAR
- Oracle : VARCHAR2
- 해당 설정을 통해서 JPA 가 어느 데이터베이스에 종속되지 않도록 설정할 수 있다.
- 현재 강의에서는 h2를 메인으로 사용하기 때문에
- org.hibernate.dialect.H2Dialect 로 진행한다.
2. JPA 구동 방식
JPA 에는 Persistence 라는 클래스가 존재한다.
- META-INF/persistence.xml 을 읽어서 설정 정보를 조회한다.
- 읽은 정보를 기반으로 EntityManagerFactory를 생성한다.
- 이를 기반으로 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 |