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