{"id":4149,"date":"2024-03-13T08:01:27","date_gmt":"2024-03-13T08:01:27","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/"},"modified":"2025-07-31T03:59:24","modified_gmt":"2025-07-31T03:59:24","slug":"how-to-handle-lazy-loading-issue-in-mybatis","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/","title":{"rendered":"Fix MyBatis Lazy Loading Issues"},"content":{"rendered":"<p>In MyBatis, performance issues can be addressed by utilizing lazy loading, which means fetching information from the database only when it is needed. MyBatis offers two ways to implement lazy loading.<\/p>\n<ol>\n<li>Lazy loading is used by configuring it in the mapping file of MyBatis. When querying the main object, the related object information is not retrieved immediately; it is only retrieved when the related object is needed. For example:<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">resultMap<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"userMap\"<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"User\"<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">id<\/span> <span class=\"hljs-attr\">property<\/span>=<span class=\"hljs-string\">\"id\"<\/span> <span class=\"hljs-attr\">column<\/span>=<span class=\"hljs-string\">\"id\"<\/span>\/&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">result<\/span> <span class=\"hljs-attr\">property<\/span>=<span class=\"hljs-string\">\"name\"<\/span> <span class=\"hljs-attr\">column<\/span>=<span class=\"hljs-string\">\"name\"<\/span>\/&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">collection<\/span> <span class=\"hljs-attr\">property<\/span>=<span class=\"hljs-string\">\"articles\"<\/span> <span class=\"hljs-attr\">ofType<\/span>=<span class=\"hljs-string\">\"Article\"<\/span> <span class=\"hljs-attr\">column<\/span>=<span class=\"hljs-string\">\"user_id\"<\/span> <span class=\"hljs-attr\">select<\/span>=<span class=\"hljs-string\">\"selectArticles\"<\/span> <span class=\"hljs-attr\">fetchType<\/span>=<span class=\"hljs-string\">\"lazy\"<\/span>\/&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">resultMap<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<ol>\n<li>Utilizing a lazy loader: Configure a lazy loader in the MyBatis configuration file, then manually invoke it at the desired locations for lazy loading. For example:<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-type\">User<\/span> <span class=\"hljs-variable\">user<\/span> <span class=\"hljs-operator\">=<\/span> sqlSession.selectOne(<span class=\"hljs-string\">\"selectUser\"<\/span>, <span class=\"hljs-number\">1<\/span>);\r\n<span class=\"hljs-type\">LazyLoader<\/span> <span class=\"hljs-variable\">lazyLoader<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">LazyLoader<\/span>() {\r\n    <span class=\"hljs-meta\">@Override<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">load<\/span><span class=\"hljs-params\">()<\/span> {\r\n        user.setArticles(sqlSession.selectList(<span class=\"hljs-string\">\"selectArticles\"<\/span>, user.getId()));\r\n    }\r\n};\r\nuser.setLazyLoader(lazyLoader);\r\n<\/code><\/pre>\n<p>By using lazy loading and delay loaders, the performance of queries can be improved by only retrieving information about associated objects when needed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In MyBatis, performance issues can be addressed by utilizing lazy loading, which means fetching information from the database only when it is needed. MyBatis offers two ways to implement lazy loading. Lazy loading is used by configuring it in the mapping file of MyBatis. When querying the main object, the related object information is not [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[284,87,3261,1459,617],"class_list":["post-4149","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-database","tag-java","tag-lazy-loading","tag-mybatis","tag-performance"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Fix MyBatis Lazy Loading Issues - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn how to resolve MyBatis lazy loading problems. Optimize database performance with configuration examples.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fix MyBatis Lazy Loading Issues\" \/>\n<meta property=\"og:description\" content=\"Learn how to resolve MyBatis lazy loading problems. Optimize database performance with configuration examples.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-13T08:01:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T03:59:24+00:00\" \/>\n<meta name=\"author\" content=\"Ava Mitchell\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ava Mitchell\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/\"},\"author\":{\"name\":\"Ava Mitchell\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64\"},\"headline\":\"Fix MyBatis Lazy Loading Issues\",\"datePublished\":\"2024-03-13T08:01:27+00:00\",\"dateModified\":\"2025-07-31T03:59:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/\"},\"wordCount\":123,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"database\",\"Java\",\"lazy loading\",\"MyBatis\",\"Performance\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/\",\"name\":\"Fix MyBatis Lazy Loading Issues - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-13T08:01:27+00:00\",\"dateModified\":\"2025-07-31T03:59:24+00:00\",\"description\":\"Learn how to resolve MyBatis lazy loading problems. Optimize database performance with configuration examples.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fix MyBatis Lazy Loading Issues\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64\",\"name\":\"Ava Mitchell\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g\",\"caption\":\"Ava Mitchell\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/avamitchell\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Fix MyBatis Lazy Loading Issues - Blog - Silicon Cloud","description":"Learn how to resolve MyBatis lazy loading problems. Optimize database performance with configuration examples.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/","og_locale":"en_US","og_type":"article","og_title":"Fix MyBatis Lazy Loading Issues","og_description":"Learn how to resolve MyBatis lazy loading problems. Optimize database performance with configuration examples.","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-13T08:01:27+00:00","article_modified_time":"2025-07-31T03:59:24+00:00","author":"Ava Mitchell","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Ava Mitchell","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/"},"author":{"name":"Ava Mitchell","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64"},"headline":"Fix MyBatis Lazy Loading Issues","datePublished":"2024-03-13T08:01:27+00:00","dateModified":"2025-07-31T03:59:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/"},"wordCount":123,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["database","Java","lazy loading","MyBatis","Performance"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/","name":"Fix MyBatis Lazy Loading Issues - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-13T08:01:27+00:00","dateModified":"2025-07-31T03:59:24+00:00","description":"Learn how to resolve MyBatis lazy loading problems. Optimize database performance with configuration examples.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-handle-lazy-loading-issue-in-mybatis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Fix MyBatis Lazy Loading Issues"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64","name":"Ava Mitchell","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g","caption":"Ava Mitchell"},"url":"https:\/\/www.silicloud.com\/blog\/author\/avamitchell\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/4149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=4149"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/4149\/revisions"}],"predecessor-version":[{"id":148812,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/4149\/revisions\/148812"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=4149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=4149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=4149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}