Hibernate 在視圖模式中開啟會話的缺點
Hibernate 在視圖中開啟會話(OSIV) 模式在整個請求的整個過程中維護一個開啟會話生命週期。雖然這種方法看起來很方便,但它有幾個陷阱:
1。缺乏事務控制
OSIV 允許在託管事務之外進行資料操作,從而導致資料不一致。 UI 渲染期間執行的每個語句都以自動提交模式發生,這會增加 I/O 開銷並可能損害資料庫效能。
2.混合關注點
OSIV 模糊了服務層和 UI 層之間的分離,因為語句是由兩者產生的。這使得測試變得複雜,並且使得隔離層變得更加困難。
3. N 1 查詢效能問題
OSIV 將 UI 層限制為導航關聯,這可能會導致 N 1 查詢問題。雖然 Hibernate 提供了 @BatchSize 和 FetchMode.SUBSELECT 等緩解措施,但它們會影響預設的獲取計劃,並且可能並非適用於所有場景。
4.資源管理
OSIV 在整個 UI 渲染階段保持資料庫連線開啟。這種延長的連接租用可能會在連接池中造成擁塞,從而限制可擴展性和吞吐量。
OSIV 的替代方案
要在解決 OSIV 的限制的同時避免LazyLoadExceptions,請考慮以下這些替代策略:
- 渴望取得:在服務層中急切地初始化所有必需的關聯,以避免延遲載入錯誤。
- FetchMode.JOIN:在查詢中使用 FetchMode.JOIN 來急切地載入特定關聯。
- 批次取得:利用@BatchSize批次取得關聯並改善
- DTO 投影: 建立封裝相關資料的DTO(資料傳輸物件),而不包含惰性關聯。
在 Spring Boot 中停用 OSIV
在 Spring Boot 中,OSIV 預設為啟用。要停用它,請將以下屬性新增至您的application.properties 設定檔:
spring.jpa.open-in-view=false
透過停用OSIV,您可以更好地控制資料擷取、確保事務完整性並提高應用程式效能。
以上是你應該在視圖模式中使用 Hibernate 的 Open Session 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JVM'SperformanceIsCompetitiveWithOtherRuntimes,operingabalanceOfspeed,安全性和生產性。 1)JVMUSESJITCOMPILATIONFORDYNAMICOPTIMIZAIZATIONS.2)c提供NativePernativePerformanceButlanceButlactsjvm'ssafetyFeatures.3)

JavaachievesPlatFormIndependencEthroughTheJavavIrtualMachine(JVM),允許CodeTorunonAnyPlatFormWithAjvm.1)codeisscompiledIntobytecode,notmachine-specificodificcode.2)bytecodeisisteredbytheybytheybytheybythejvm,enablingcross-platerssectectectectectross-eenablingcrossectectectectectection.2)

TheJVMisanabstractcomputingmachinecrucialforrunningJavaprogramsduetoitsplatform-independentarchitecture.Itincludes:1)ClassLoaderforloadingclasses,2)RuntimeDataAreafordatastorage,3)ExecutionEnginewithInterpreter,JITCompiler,andGarbageCollectorforbytec

JVMhasacloserelationshipwiththeOSasittranslatesJavabytecodeintomachine-specificinstructions,managesmemory,andhandlesgarbagecollection.ThisrelationshipallowsJavatorunonvariousOSenvironments,butitalsopresentschallengeslikedifferentJVMbehaviorsandOS-spe

Java實現“一次編寫,到處運行”通過編譯成字節碼並在Java虛擬機(JVM)上運行。 1)編寫Java代碼並編譯成字節碼。 2)字節碼在任何安裝了JVM的平台上運行。 3)使用Java原生接口(JNI)處理平台特定功能。儘管存在挑戰,如JVM一致性和平台特定庫的使用,但WORA大大提高了開發效率和部署靈活性。

JavaachievesPlatFormIndependencethroughTheJavavIrtualMachine(JVM),允許Codetorunondifferentoperatingsystemsswithoutmodification.thejvmcompilesjavacodeintoplatform-interploplatform-interpectentbybyteentbytybyteentbybytecode,whatittheninternterninterpretsandectectececutesoneonthepecificos,atrafficteyos,Afferctinginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginging

JavaispoperfulduetoitsplatFormitiondence,對象與偏見,RichstandardLibrary,PerformanceCapabilities和StrongsecurityFeatures.1)Platform-dimplighandependectionceallowsenceallowsenceallowsenceallowsencationSapplicationStornanyDevicesupportingJava.2)

Java的頂級功能包括:1)面向對象編程,支持多態性,提升代碼的靈活性和可維護性;2)異常處理機制,通過try-catch-finally塊提高代碼的魯棒性;3)垃圾回收,簡化內存管理;4)泛型,增強類型安全性;5)ambda表達式和函數式編程,使代碼更簡潔和表達性強;6)豐富的標準庫,提供優化過的數據結構和算法。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3 Linux新版
SublimeText3 Linux最新版

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中