



Member member = em.getReference(Member.class, "id1");
member.getName();
**내부 예상 로직**
1. 초기화 요청
2. DB 조회
3. 실제 Entity 생성 및 참조 보관
4. 실제 값 return
💡 연관관계 설정할 때는 식별자 값만 사용하므로 프록시를 사용하면 DB 접근 횟수를 줄일 수 있다.

SELECT
M.MEMBER_ID AS MEMBER_ID,
M.TEAM_ID AS TEAM_ID,
M.USERNAME AS USERNAME,
T.TEAM_ID AS TEAM_ID,
T.NAME AS NAME
FROM
MEMBER M LEFT OUTER JOIN TEAM T
ON M.TEAM_ID=T.TEAM_ID
WHERE
M.MEMBER_ID='member1'


Lazy 로딩되는 Entity에 즉시 로딩이 있다면 해당 Entity도 로딩!
💡 추천은 모든 연관관계를 지연로딩 후, 상황에 따라서 변동!
특정 엔티티를 영속 상태로 만들 때, 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용함
JPA에서는 엔티티를 저장할 때, 연관된 모든 엔티티는 영속 상태여야 함

Child child1 = new Child();
Child child2 = new Child();
Parent parent = new Parent();
child1.setParent(parent);
child2.setParent(parent);
parent.getChildren().add(child1);
parent.getChildren().add(child2);
//부모 저장, 연관된 자식들 저장
em.persist(parent);
Parent findParent = em.find(Parent.class, 1L);
부모와 연관 자식도 모두 제거
em.remove(findParent);
💡 참조하는 곳이 하나일 때만 사용해야 함!
💡 @OneToMany에만 사용 가능
일반적으로 엔티티는 persist로 영속, remove를 통해 제거
-> 엔티티 스스로 생명주기를 관리한다는 뜻!
CascadeType.ALL + orphanRemoval = true
-> 부모 엔티티를 통해서 자식의 생명주기를 관리할 수 있다는 뜻