@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();
Member member = new Member(); member.setId(1L); member.setName("memberA"); em.persist(member); tx.commit();
Member findMember = em.find(Member.class, 333L); System.out.println(findMember.getId()); System.out.println(findMember.getName());
Member findMember = em.find(Member.class, 333L); //★★★ find 필수 findMember.setName("memberC"); em.persist(findMember); tx.commit();
Member findMember = em.find(Member.class, 333L); //★★★ find 필수 em.remove(findMember); tx.commit();
//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()); }
기본값 타입 JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적이 가능하다. 예시 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 ...
JPA와 API 결론부터 말하면 API에서는 엔티티 그대로 반환하면 안 된다. 엔티티는 스펙이 변경될 가능성이 크기 때문이다. 또한 애플리케이션 내부 로직이 노출될 위험성도 존재하기 떄문이라는 이유도 있다. v1 - 엔티티를 직접 노출 엔티티를 그대로 반환하기 때문에 API에서 사용하기에는 좋지 않은 방법 지연 로딩에 의해...
컬렉션 조회 이번 게시글에서는 엔티티 내부에 있는 컬렉션 필드의 조회를 최적화하는 방법에 대해서 알아본다. 컬렉션 필드를 쓰면 쿼리가 많이 나가서 최적화를 상당히 신경써야 한다. v1 - 엔티티를 직접 노출 엔티티를 그대로 반환하기 때문에 API에서 사용하기에는 좋지 않은 방법 지연 로딩에 의해 프록시로 존재하는 부분을 강제로...
[JPA 기본] 환경설정
[JPA 기본] 영속성 관리
새 버전의 콘텐츠를 사용할 수 있습니다.