jpa (3) 썸네일형 리스트형 연관관계 매핑 기초 회원 ( Member ) : N 팀 ( Team ) : 1 회원과 팀은 다대일의 관계 : 1개의 팀에 여러명의 회원이 있다. 테이블 → '외래키'로 조인 객체 → 참조 ex) member.getId() * 단방향 @ManyToOne @JoinColumn(name = "Team_ID") private Team team; * 양방향 연관관계 - 양방향 매핑 ( 반대방향으로 객체 그래프 탐색 ) @OneToMany(mappedBy = "team") // team 은 Member 클래스에 있는 Team 의 변수명 List members = new ArrayList(); mappedBy 를 알기 위해선...객체와 테이블이 관계를 맺는 차이 알아야됨. *객체와 테이블이 관계를 맺는 차이 객체 연관관계 = 2개 회원.. 플러시 @영속성 컨텍스트를 플러시 하는 법 1. em.flush() - 직접호출 2. 트랜잭션 커밋 - 플러시 자동 호출 3. JPQL 쿼리 실행 - 플러시 자동 호출 : 자동 호출 되는 이유는 em.persist(memberA); em.persist(memberB); em.persist(memberC); //중간에 JPQL 실행 query = em.createQuery("select m from Member m", Member.class); List members= query.getResultList(); : member A,B,C 가 commit 전에는 쿼리가 날라가지 않음.. JPQL 은 1차캐시에서 먼저 찾지 않고 DB에서 찾은 후 1차 캐시에 저장 1차 캐시에 같은게 있으면 쿼리에서 찾은거 버림... .. 영속성 관리 && 준영속성 ◇영속성 * 영속 상태일때 쿼리가 날라가는게 아님.. commit 때 날라감 //객체를 생성한 상태(비영속) Member member = new Member(); member.setId("member1"); member.setUsername(“회원1”); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); //객체를 저장한 상태(영속) em.persist(member); //>>> 1차 캐시에 저장됨. //1차 캐시에서 조회 Member findMember = em.find(Member.class, "member1"); * 영속 엔티티의 동일성 보장 Member a = em.find(Member.class, "member1.. 이전 1 다음