[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 라이센스를 따릅니다.