{"id":11786,"date":"2024-03-14T14:46:19","date_gmt":"2024-03-14T14:46:19","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/"},"modified":"2025-08-04T17:04:47","modified_gmt":"2025-08-04T17:04:47","slug":"what-is-the-method-for-creating-transactions-in-mybatis","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/","title":{"rendered":"MyBatis Transaction Management Explained"},"content":{"rendered":"<p>In MyBatis, there are two methods available for creating transactions:<\/p>\n<ol>\n<li>Programming-based transaction management: By manually controlling the submission and rollback of transactions through writing code, you can use the commit() and rollback() methods of SqlSession to control the submission and rollback of transactions.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-type\">SqlSession<\/span> <span class=\"hljs-variable\">sqlSession<\/span> <span class=\"hljs-operator\">=<\/span> sqlSessionFactory.openSession();\r\n<span class=\"hljs-keyword\">try<\/span> {\r\n    <span class=\"hljs-comment\">\/\/ \u6267\u884c\u6570\u636e\u5e93\u64cd\u4f5c<\/span>\r\n    sqlSession.insert(<span class=\"hljs-string\">\"insertUser\"<\/span>, user);\r\n    sqlSession.update(<span class=\"hljs-string\">\"updateUser\"<\/span>, user);\r\n    \r\n    <span class=\"hljs-comment\">\/\/ \u63d0\u4ea4\u4e8b\u52a1<\/span>\r\n    sqlSession.commit();\r\n} <span class=\"hljs-keyword\">catch<\/span> (Exception e) {\r\n    <span class=\"hljs-comment\">\/\/ \u56de\u6eda\u4e8b\u52a1<\/span>\r\n    sqlSession.rollback();\r\n} <span class=\"hljs-keyword\">finally<\/span> {\r\n    sqlSession.close();\r\n}\r\n<\/code><\/pre>\n<ol>\n<li>Declarative transaction management: Configuring Spring&#8217;s transaction manager allows for declarative transaction management, where transaction propagation behavior, isolation level, and other parameters can be declared in the configuration file. Transactions can then be enabled by adding the @Transactional annotation to methods or classes.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-meta\">@Service<\/span>\r\n<span class=\"hljs-meta\">@Transactional<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">UserServiceImpl<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title class_\">UserService<\/span> {\r\n    \r\n    <span class=\"hljs-meta\">@Autowired<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> UserMapper userMapper;\r\n    \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_\">addUser<\/span><span class=\"hljs-params\">(User user)<\/span> {\r\n        userMapper.insertUser(user);\r\n        userMapper.updateUser(user);\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>Transaction management in MyBatis can be achieved using any method. With programmatic transaction management, manual handling of transaction commits and rollbacks is required. On the other hand, declarative transaction management is more convenient, as you only need to add the @Transactional annotation to the method or class where transaction management is needed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In MyBatis, there are two methods available for creating transactions: Programming-based transaction management: By manually controlling the submission and rollback of transactions through writing code, you can use the commit() and rollback() methods of SqlSession to control the submission and rollback of transactions. SqlSession sqlSession = sqlSessionFactory.openSession(); try { \/\/ \u6267\u884c\u6570\u636e\u5e93\u64cd\u4f5c sqlSession.insert(&#8220;insertUser&#8221;, user); sqlSession.update(&#8220;updateUser&#8221;, user); [&hellip;]<\/p>\n","protected":false},"author":14,"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":[2136,2688,1459,3497,609],"class_list":["post-11786","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-database-transactions","tag-java-persistence","tag-mybatis","tag-sqlsession","tag-transaction-management"],"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>MyBatis Transaction Management Explained - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn programmatic MyBatis transactions with SqlSession commit\/rollback methods. Master transaction control.\" \/>\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\/what-is-the-method-for-creating-transactions-in-mybatis\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MyBatis Transaction Management Explained\" \/>\n<meta property=\"og:description\" content=\"Learn programmatic MyBatis transactions with SqlSession commit\/rollback methods. Master transaction control.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-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-14T14:46:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-04T17:04:47+00:00\" \/>\n<meta name=\"author\" content=\"Noah Thompson\" \/>\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=\"Noah Thompson\" \/>\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\/what-is-the-method-for-creating-transactions-in-mybatis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/\"},\"author\":{\"name\":\"Noah Thompson\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/2e83cc6ab9f60d36921c2d0f9f280f4a\"},\"headline\":\"MyBatis Transaction Management Explained\",\"datePublished\":\"2024-03-14T14:46:19+00:00\",\"dateModified\":\"2025-08-04T17:04:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/\"},\"wordCount\":142,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"database transactions\",\"Java persistence\",\"MyBatis\",\"SqlSession\",\"transaction management\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/\",\"name\":\"MyBatis Transaction Management Explained - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T14:46:19+00:00\",\"dateModified\":\"2025-08-04T17:04:47+00:00\",\"description\":\"Learn programmatic MyBatis transactions with SqlSession commit\/rollback methods. Master transaction control.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MyBatis Transaction Management Explained\"}]},{\"@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\/2e83cc6ab9f60d36921c2d0f9f280f4a\",\"name\":\"Noah Thompson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/350e537e1530ede2762ee0237e877d6693f4f7163ab4f303202cc9a6b27b6cb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/350e537e1530ede2762ee0237e877d6693f4f7163ab4f303202cc9a6b27b6cb4?s=96&d=mm&r=g\",\"caption\":\"Noah Thompson\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/noahthompson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MyBatis Transaction Management Explained - Blog - Silicon Cloud","description":"Learn programmatic MyBatis transactions with SqlSession commit\/rollback methods. Master transaction control.","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\/what-is-the-method-for-creating-transactions-in-mybatis\/","og_locale":"en_US","og_type":"article","og_title":"MyBatis Transaction Management Explained","og_description":"Learn programmatic MyBatis transactions with SqlSession commit\/rollback methods. Master transaction control.","og_url":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T14:46:19+00:00","article_modified_time":"2025-08-04T17:04:47+00:00","author":"Noah Thompson","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Noah Thompson","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/"},"author":{"name":"Noah Thompson","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/2e83cc6ab9f60d36921c2d0f9f280f4a"},"headline":"MyBatis Transaction Management Explained","datePublished":"2024-03-14T14:46:19+00:00","dateModified":"2025-08-04T17:04:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/"},"wordCount":142,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["database transactions","Java persistence","MyBatis","SqlSession","transaction management"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/","url":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/","name":"MyBatis Transaction Management Explained - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T14:46:19+00:00","dateModified":"2025-08-04T17:04:47+00:00","description":"Learn programmatic MyBatis transactions with SqlSession commit\/rollback methods. Master transaction control.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-for-creating-transactions-in-mybatis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MyBatis Transaction Management Explained"}]},{"@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\/2e83cc6ab9f60d36921c2d0f9f280f4a","name":"Noah Thompson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/350e537e1530ede2762ee0237e877d6693f4f7163ab4f303202cc9a6b27b6cb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/350e537e1530ede2762ee0237e877d6693f4f7163ab4f303202cc9a6b27b6cb4?s=96&d=mm&r=g","caption":"Noah Thompson"},"url":"https:\/\/www.silicloud.com\/blog\/author\/noahthompson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11786","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\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=11786"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11786\/revisions"}],"predecessor-version":[{"id":155583,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11786\/revisions\/155583"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=11786"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=11786"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=11786"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}