μ¬μ μ μλ―Έλ‘λ Proxy, λ리(νμ)λ λ리κΆ, λ리ν¬νλ₯Ό λ»νλ©°, μμ€ν μ μΌλΆ κΈ°λ₯μ λ€λ₯Έ κ²μ΄ μμλ‘ λννλ κ²μ λ§νλ€.
- μ€μ ν΄λμ€λ₯Ό μμ λ°μμ λ§λ€μ΄μ§λ€.
- μ€μ ν΄λμ€μ κ² λͺ¨μμ΄ κ°λ€.
- νλ‘μ κ°μ²΄λ μ€μ κ°μ²΄μ μ°Έμ‘°(target)λ₯Ό 보κ΄νλ€.
- νλ‘μ κ°μ²΄λ₯Ό νΈμΆνλ©΄ νλ‘μ κ°μ²΄λ μ€μ κ°μ²΄μ λ©μλλ₯Ό νΈμΆνλ€.
em.find()
λ₯Ό νΈμΆνλ©΄ λ°μ΄ν° λ² μ΄μ€λ₯Ό ν΅ν΄μ μ€μ μν°ν° κ°μ²΄λ₯Ό μ‘°ννμ§λ§em.getReference()
λ₯Ό νΈμΆνλ©΄ λ°μ΄ν°λ² μ΄μ€ μ‘°νλ₯Ό 미루λ νλ‘μ κ°μ²΄λ₯Ό μ‘°ννλ€.
em.getReference(Member.class, "id1");
λ₯Ό νΈμΆνλ€κ³ μ¦μ λ°μ΄ν°λ² μ΄μ€μ μ‘°ν μΏΌλ¦¬κ° λ λΌκ°λ κ²μ΄ μλλ€.- μμμ± μ»¨ν μ€νΈμ νλ‘μ κ°μ²΄λ§ μμ±ν΄ λκ³ , λμ€μ Memberμ λ©μλλ μ΄κΈ°ν μμ²μ΄ νΈμΆλλ©΄ κ·Έ λ μ‘°ν 쿼리λ₯Ό DBμ λ λ €μ μ€μ μν°ν°λ₯Ό μμ±νλ€.
- μ΄λ κ² νλ‘μ κ°μ²΄λ₯Ό μ΄μ©νλ©΄, λ°μ΄ν°λ₯Ό DBμμ λ°λ‘ κ°κ³ μ€λ μ¦μ λ‘λ©,
- λΉμ₯ νμνμ§ μμ λ°μ΄ν°μ μ‘°νλ₯Ό λμ€μΌλ‘ 미루λ μ§μ° λ‘λ©μ μ¬μ©ν μ μλ€.
- νλ‘μ κ°μ²΄λ μ²μ μ¬μ©ν λ ν λ²λ§ μ΄κΈ°νλλ€.
- νλ‘μ κ°μ²΄λ μλ³Έ μν°ν°λ₯Ό μμλ°κΈ° λλ¬Έμ, νμ 체ν¬μ μ£Όμν΄μΌνλ€. (== λμ , instanceof λ₯Ό μ¬μ©)
- μμμ± μ»¨ν
μ€νΈλ κ°μ μμμ± μ»¨ν
μ€νΈ(κ°μ νΈλμμ
λ 벨)μ μμλ λ°μ΄ν°μ νν΄μ λμΌμ±μ 보μ₯νλ€. (== λΉκ΅μ trueλ₯Ό 보μ₯)
- μμμ± μ»¨ν
μ€νΈμ μ°Ύλ λ°μ΄ν°κ° μ΄λ―Έ μλ€λ©΄
em.getReference()
λ₯Ό νΈμΆν΄λ μ€μ μν°ν°λ₯Ό λ°ννλ€.
- μμμ± μ»¨ν
μ€νΈμ μ°Ύλ λ°μ΄ν°κ° μ΄λ―Έ μλ€λ©΄
- μ€μμ μνμΌ λ, νλ‘μλ₯Ό μ΄κΈ°ννλ©΄ λ¬Έμ κ° λ°μνλ€.
- νμ΄λ²λ€μ΄νΈλ μ΄ λ
org.hibernate.LazyInitializationException
μμΈλ₯Ό ν°νΈλ¦°λ€.
- νμ΄λ²λ€μ΄νΈλ μ΄ λ
- νλ‘μ μΈμ€ν΄μ€μ μ΄κΈ°ν μ¬λΆ νμΈ
emf.PersistenceUnitUtil.isLoaded(Object entity)
- νλ‘μ κ°μ μ΄κΈ°ν
Hibernate.initialize(entity)
- JPA νμ€μ κ°μ μ΄κΈ°ν λ©μλκ° μλ€. -> μν°ν° μ‘°ν λ©μλ νΈμΆ