-
2. JPA 시작Back-End/JPA 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'Back-End > JPA' 카테고리의 다른 글
6. 다양한 연관관계 매핑 (0) 2022.04.30 5. 연관관계 매핑 기초 (0) 2022.04.23 4. 엔티티 매핑 (0) 2022.04.17 3. 영속성 관리 (0) 2022.04.11 1. JPA 소개 - 패러다임의 불일치 (0) 2022.03.30