πλ€λ‘κ°κΈ°
Memberλ₯Ό μ‘°νν λ Teamλ ν¨κ» μ‘°νν΄μΌ ν κΉ?

νμκ³Ό ν ν¨κ» μΆλ ₯
public void printUserAndTeam(String memberId) {
Member member = em.find(Member.class, memberId);
Team team = member.getTeam();
System.out.println("νμ μ΄λ¦: " + member.getUsername());
System.out.println("μμν: " + team.getName());
}
νμλ§ μΆλ ₯
public void printUser(String memberId) {
Member member = em.find(Member.class, memberId);
Team team = member.getTeam();
System.out.println("νμ μ΄λ¦: " + member.getUsername());
}
νλ‘μ κΈ°μ΄
- Java Persistence API(JPA)μ EntityManager μΈν°νμ΄μ€μμλ getReference()λΌλ λ©μλλ₯Ό μ 곡νλ€. μ΄ λ©μλλ λ°μ΄ν°λ² μ΄μ€λ‘λΆν° ν΄λΉ μν°ν°λ₯Ό μ§μ μ‘°ννλ λμ , νλ‘μ κ°μ²΄λ₯Ό λ°ννλ€.
- μ€μ λ‘ μν°ν°κ° μ¬μ©λλ μμ κΉμ§ λ°μ΄ν°λ² μ΄μ€ μ‘°νλ₯Ό μ§μ°ν μ μλ€.
- Lazy Loadingμ΄λΌκ³ λ λΆλ₯Έλ€.
em.find() : μ¬μ© μ¦μ SELECT SQLμ μ€ννμ¬ λ°μ΄ν°λ² μ΄μ€μμ μν°ν°λ₯Ό μ‘°ν
em.getReference() : λ°μ΄ν°λ² μ΄μ€ μ‘°νλ₯Ό 미루λ κ°μ§(νλ‘μ) μν°ν° κ°μ²΄λ₯Ό λ§λ€κ³ , μ€μ λ‘ μν°ν°μ μ κ·Όν νμκ° μλ μμ μμ SELECT SQL μ μ‘

νλ‘μ νΉμ§
- Lazy Loading: νλ‘μ κ°μ²΄λ μ€μ μν°ν°λ₯Ό μ¬μ©νλ μμ κΉμ§ λ°μ΄ν°λ² μ΄μ€ μ‘°νλ₯Ό μ§μ°. μ΄λ κ² νλ©΄ λΆνμν λ°μ΄ν°λ² μ΄μ€ μ‘°νλ₯Ό μ΅μννμ¬ μ±λ₯μ ν₯μμν¬ μ μλ€.
- μμ ꡬ쑰: νλ‘μ κ°μ²΄λ ν΄λΉ μν°ν°μ ν΄λμ€λ₯Ό μμλ°μ νμ ν΄λμ€. λ°λΌμ μ€μ μν°ν°μ λμΌν λ©μλμ νλλ₯Ό κ°μ§κ³ μλ€.
- μ΄κΈ°ν μμ : νλ‘μ κ°μ²΄μ λ©μλλ₯Ό νΈμΆνκ±°λ νλμ μ κ·Όν λ, μ€μ μν°ν°λ₯Ό λ°μ΄ν°λ² μ΄μ€μμ μ‘°ννκ³ μ΄κΈ°ν.
- μ¬μ©νλ μ
μ₯μμλ μ§μ§ κ°μ²΄μΈμ§ νλ‘μ κ°μ²΄μΈμ§ ꡬλΆνμ§ μκ³ μ¬μ©νλ©΄ λλ€.(μ΄λ‘ μ)
- νλ‘μ κ°μ²΄λ μ€μ κ°μ²΄μ μ°Έμ‘°(target)λ₯Ό 보κ΄
- νλ‘μ κ°μ²΄λ₯Ό νΈμΆνλ©΄ νλ‘μ κ°μ²΄λ μ€μ κ°μ²΄μ λ©μλ νΈμΆ


νλ‘μ κ°μ²΄μ μ΄κΈ°ν
Member member = em.getReference(Member.class, βid1β);
member.getName(); // μ€μ λ‘ μν°ν°μ λ°μ΄ν°κ° νμν μμ μ μ΄κΈ°
