我配置了SqlSessionFactoryBean之后,隨便找了個地方給一個變數注入這個物件,然后通過isSingleton方法發現這個工廠是單實體的,
那么是不是每次dao層如果使用SqlSessionFactoryBean獲取sqlsession,獲取到的都是同一個sqlsession?...
另外,dao層如果不標記為多實體,是不是每次請求都是同一個sql會話來處理?或者說,專案運行程序中,一直僅僅使用了一個連接?
感謝前輩解答!
uj5u.com熱心網友回復:
我糊涂了,SqlSessionFactoryBean是sqlsession工廠的工廠....好吧,現在只想求助第二個問題:
dao層和service層如果不標記為多實體,并發訪問時事務還能正常使用嗎?
dao層的實作是mybatis創建的,怎么標記成多實體?
我給service層加了2秒延遲,然后快速打開兩個頁面同時發送請求,發現輸出的dao層實作類的地址是同一個,也就是說并發訪問時,dao的實作類都是同一個,那么是否說明并發訪問時,使用的sqlsession也是同一個?那還咋進行事務控制?(@Transactional,開啟事務,回滾/提交...)...
學的太迷茫了!感謝回復!
uj5u.com熱心網友回復:
按邏輯來講, dao層注入的是SqlSessionFactory 是工廠,由工廠生產session,例如 sqlsessionFatory.openSession() 獲取的,檢索原始碼,會發現每個session都是 重新new出來的;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/76138.html
標籤:Web 開發
