[JPA 기본] EntityManager를 통한 기초 CRUD
포스트
취소

[JPA 기본] EntityManager를 통한 기초 CRUD

엔티티 class 기초 구조

    @Entity
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Member {
        @Id
        private Long id;
        private String name; 
    }

공통 코드

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); //애플리케이션 전체 공유 (persistence.xml 참조)
    EntityManager em = emf.createEntityManager(); //한번 쓰고 버려야함, 쓰레드간 공유하지 않음
    EntityTransaction tx = em.getTransaction(); //조회를 제외한 DML 작업시 필수로 사용
    tx.begin();
    
    try {
        //실행 내용
    } catch (Exception e) {
        e.printStackTrace();
        tx.rollback();
    } finally {
        em.close();
    }
    
    emf.close();

INSERT

    Member member = new Member();
    member.setId(1L);
    member.setName("memberA");
    em.persist(member);
    tx.commit();

SELECT

    Member findMember = em.find(Member.class, 333L);
    System.out.println(findMember.getId());
    System.out.println(findMember.getName());

UPDATE

    Member findMember = em.find(Member.class, 333L); //★★★ find 필수
    findMember.setName("memberC");
    em.persist(findMember);
    tx.commit();

DELETE

    Member findMember = em.find(Member.class, 333L); //★★★ find 필수
    em.remove(findMember);
    tx.commit();

SELECT - JPQL

    //JPA 입장에서는 테이블이 아닌 객체를 대상으로 쿼리를 작성한다.
    //콘솔에 나오는 쿼리 잘 살펴보기
    List<Member> member_list =
            em.createQuery("select m from Member as m", Member.class)
            .setFirstResult(1) //페이징 (시작점)
            .setMaxResults(2) //페이징 (블록 단위)
            .getResultList();
    for(Member member:member_list) {
        System.out.println(member.getId() + " / " + member.getName());
    }

출처

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.