[우아한테크코스] 6월 28일 TIL

less than 1 minute read

[JPA] 객체 매핑하기

  • @Entity
    JPA가 관리할 객체

  • @Id
    DB PK와 매핑할 컬럼

jpa는 특정 db에 종속적이지 않은 기술, 각 db 문법이 다른 문제 해결 -> Dialect로 하나로 통일해서 jpa가 사용하도록 hibernate.dialect가 도윰

  • 엔티티 매니저 설정
    Persistence에서 persistence.xml을 통해 설정 정보 조회, Persistence로부터 EntityManagerFactory 생성, EntityManagerFactory로부터 EntityManager 생성
    EntityManagerFactory는 서버 띄울 때 로딩하고, 유저가 접근할 때마다 여기서 빼서 쓰는 것
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();

tx.begin();
try{
    Member member = new Member();
    member.setId(100L);
    member.setName("안녕??");
    em.persist(member);
    tx.commit();
} catch (Exception e) {
    tx.rollback();
} finally {
    em.close();
}

emf.close();

이렇게 엔티티 매니저 만들고 사용했으면 닫는 과정도 필요
엔티티 매니저 팩토리는 하나만 생성해서 공유
엔티티 매니저는 쓰레드 간에 공유
JPA의 모든 데이터 변경은 트랜잭션 안에서 실행