μ²μμΌ λ
SessionImpl μμ fireLoad() λ₯Ό νλ€.
fireLoad() μμ fireLoadNoChecks() λ₯Ό μννλ€.
fireLoadNoChecks() μμ fastSessionServices.eventListenerGroup_LOAD.fireEventOnEachListener( event, loadType, LoadEventListener::onLoad ); λ₯Ό νΈμΆνλ€.
fireEventOnEachListener() λ EventListenerGroupImpl μ λ©μλμ΄κ³ , eventType μ load μ΄λ€.
λ±λ‘λ listener λ€μ νμΈνλλ° DefaultLoadEventListener λ°μ μλ€.
LoadEventListener::onLoad λ₯Ό νΈμΆνλ€.
DefaultLoadEventListener
onLoad() μμλ persister(λ°ν κ°μ²΄) λ₯Ό μ°Ύκ³ doOnLoad() νΈμΆ
doOnLoad() μμλ persister μ identifier λ₯Ό κ°μ§ entityKey λ₯Ό μ°Ύκ³ proxyOrLoad() νΈμΆ
proxy μΈμ§ νμΈνκ³ return a newly loaded object μ΄λ©΄ load() λ₯Ό νΈμΆ
load() μμ doLoad() νΈμΆ
doLoad() μμ 1μ°¨ μΊμ(SessionCache), 2μ°¨ μΊμ(SecondLevelCache) νμΈ ν μμΌλ©΄ loadFromDatasource() νΈμΆ
loadFromDatasource() μμ persister.load() μν
AbstractEntityPersister
load() μμ doLoad() μν β λ λ©μλ λ€ parameter λκ°μ;; κ·ΈλΌ μ load() λ₯Ό νΈμΆνλκ±°μ§;;
getAppropriateLoader() λ₯Ό νΈμΆνμ¬ EntityLoader μ°Ύκ³ EntityLoader μκ² load() νΈμΆ
Abstract~~Loader
load() μμ QueryParameters κ°μ²΄ μμ±νκ³ executeLoad() νΈμΆ
executeLoad() μμ μΌλ¨ μμμ± μ»¨ν
μ€νΈμ beforeLoad() λ©μλλ₯Ό ν΅ν΄ load count λ₯Ό 1 μ¦κ°μν΄
sql μ μ²λ¦¬νκ³ prepareQueryStatement() νΈμΆ
StatementPreparerImpl μμ preparedStatement μμ±
μμ±λ ps μ bind parameter ν¨
getResultSet() νΈμΆνκ³ ν΄λΉ λ©μλμμ extract() νΈμΆ
extract() λ ResultSetReturnImpl μ λ©μλμ΄κ³ μ¬κΈ°μ ps μ JdbcPreparedStatement μ executeQuery() λ©μλ νΈμΆ!!
DefaultLoadEventListener μ 67λ²μ€ primitive λΌλ©΄ μ΄λ¨μ§ νμΈ, 61λ² getPersister() νμΈ
μμμ± μ»¨ν μ€νΈμ μμ λ
DefaultLoadEventListener μ doOnLoad() 1μ°¨ μΊμ(SessionCache) νμΈνκΈ° μν΄
CacheEntityLoaderHelper.INSTANCE.loadFromSessionCache(
event,
keyToLoad,
options
); νΈμΆ
loadFromSessionCache() μμ session.getEntityUsingInterceptor( keyToLoad ); νΈμΆ
getEntityUsingInterceptor() μμ persistenceContext.getEntity( key ); νΈμΆ key λ EntityKey κ°μ²΄
κ·ΈλΌ StatefulPersistenceContext μ entitiesByKey(HashMap) μμ key λ‘ νμΈ