

{"id":19421,"date":"2018-06-27T04:10:47","date_gmt":"2018-06-27T04:10:47","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=19421"},"modified":"2018-09-15T12:27:22","modified_gmt":"2018-09-15T06:57:22","slug":"spring-transaction-management","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/","title":{"rendered":"Spring Transaction Management &#8211; Types and Methods"},"content":{"rendered":"<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:1901,&quot;href&quot;:&quot;https:\\\/\\\/en.wikipedia.org\\\/wiki\\\/Spring_Framework&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20251003105514\\\/https:\\\/\\\/en.wikipedia.org\\\/wiki\\\/Spring_Framework&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-12-10 07:30:46&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-15 12:34:55&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-19 00:53:54&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-22 07:31:03&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-28 18:03:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-02 18:56:25&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-05 21:42:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-11 11:07:56&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-18 16:10:39&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-24 11:15:10&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-02 10:03:18&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-06 11:15:36&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-11 05:03:27&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-16 13:02:34&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-21 05:52:52&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-25 03:33:37&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-03 07:27:11&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-15 08:39:30&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-18 09:30:46&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-01 17:30:57&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-11 21:45:34&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-16 07:00:58&quot;,&quot;http_code&quot;:503},{&quot;date&quot;:&quot;2026-04-21 06:40:46&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-24 15:27:59&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-27 16:08:07&quot;,&quot;http_code&quot;:429},{&quot;date&quot;:&quot;2026-04-30 17:25:41&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-06 03:04:02&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-14 20:58:34&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-18 03:05:48&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-21 18:04:49&quot;,&quot;http_code&quot;:429},{&quot;date&quot;:&quot;2026-05-25 06:08:23&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-02 05:46:48&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-10 06:21:50&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-06-10 06:21:50&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;}]'><\/div>\n<h2 class=\"western\">1. Objective<\/h2>\n<p>In our last tutorial, we studied <strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-jdbc\/\">Spring JDBC Framework<\/a><\/strong>. Today, we will be learning about Spring Transaction Management.\u00a0In this article, you will learn about the types of Spring Transaction Management.<br \/>\nTransaction Management in Spring Framework is an important part of RDBMS. A database transaction can be defined as a set of actions which are treated as a single unit. These actions can be either complete or incomplete which have no effect at all.<br \/>\nSo, let&#8217;s start Spring Transaction Management Tutorial.<\/p>\n<div id=\"attachment_19426\" style=\"width: 1210px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Spring-Transaction-Management-01.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-19426\" class=\"wp-image-19426 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Spring-Transaction-Management-01.jpg\" alt=\"Spring Transaction Management\" width=\"1200\" height=\"628\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Spring-Transaction-Management-01.jpg 1200w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Spring-Transaction-Management-01-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Spring-Transaction-Management-01-300x157.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Spring-Transaction-Management-01-768x402.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Spring-Transaction-Management-01-1024x536.jpg 1024w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><p id=\"caption-attachment-19426\" class=\"wp-caption-text\">Spring Transaction Management<\/p><\/div>\n<h2 class=\"western\">2. Spring Transaction Management<\/h2>\n<p>The concept of Spring Transaction Management can be described as a key property called as an ACID:<\/p>\n<ul>\n<li><strong>Atomicity-<\/strong> It says that transaction is atomic in nature i.e. it is either full or it isn\u2019t.<\/li>\n<li><strong>Consistency-<\/strong> It says that after the end of the transaction the system should be in a be a valid state.<\/li>\n<li><strong>Isolation-<\/strong> It says that all the transactions of the system should be done in isolation.<\/li>\n<li><strong>Durability-<\/strong> It says that a transaction should be durable when all the changes made to the system are permanent.<\/li>\n<\/ul>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-framework-features\/\">Let&#8217;s Discuss the Features of Spring Framework<\/a><\/strong><\/p>\n<div id=\"attachment_19434\" style=\"width: 970px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/th.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-19434\" class=\"wp-image-19434 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/th.jpg\" alt=\"Spring Transaction Management - Types and Methods\" width=\"960\" height=\"720\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/th.jpg 960w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/th-150x113.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/th-300x225.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/th-768x576.jpg 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><p id=\"caption-attachment-19434\" class=\"wp-caption-text\">Spring Transaction Management &#8211; Spring ACID<\/p><\/div>\n<div id=\"attachment_19436\" style=\"width: 414px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/tx_manager-1.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-19436\" class=\"wp-image-19436 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/tx_manager-1.jpg\" alt=\"Spring Transaction Management\" width=\"404\" height=\"287\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/tx_manager-1.jpg 404w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/tx_manager-1-150x107.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/tx_manager-1-300x213.jpg 300w\" sizes=\"auto, (max-width: 404px) 100vw, 404px\" \/><\/a><p id=\"caption-attachment-19436\" class=\"wp-caption-text\">Spring Transaction Management<\/p><\/div>\n<h2>3. Types of Transaction Management in Spring Management<\/h2>\n<p>The Spring Framework supports following types of Transaction Management:<\/p>\n<h3 class=\"western\">a. Programmatic Transaction Management in Spring<\/h3>\n<p>Spring Programmatic Transaction Management allows you to manage transaction with programming in your source code. It gives you lot of flexibility which might be hard to maintain. For Programmatic approach, PlatformTransactionManager is used for implementation. For creating new transactions, you need an instance of TransactionDefinition. You should create ofDefaultTransactionDefinition instances for using default transaction attributes. Once the TransactionDefinition gets created you can call getTransaction() for starting a transaction. This method returns an instance of TransactionStatus which helps in tracking current status. If everything goes well you can use commit() of PlatformTransactionManager.<br \/>\n<strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-framework-architecture\/\">Read About Spring Framework Architecture and 4 Modules<\/a><\/strong><\/p>\n<h3 class=\"western\">b. Declarative Transaction Management in Spring<\/h3>\n<p>Spring Declarative Transaction Management allows you to manage transaction using configuration, unlike Programmatic approach. Declarative Transaction allows separating transactions from business code. So, you can use XML configurations for managing transactions. The bean configuration helps in specifying the methods to be transactional. Some of the steps required for the Declarative approach:<\/p>\n<ul>\n<li>Make use of the tag<strong> &lt;tx: advice \/&gt;<\/strong> for creating transaction-handling advice. Also, at the same time define pointcut which matches all methods you wish to make a transaction.<\/li>\n<li>If the method is there in the configuration then the advice will begin transaction before calling the method.<\/li>\n<li>The Target() will get executed in a try block.<\/li>\n<li>If Target() finishes the AOP commits transaction successfully else rollback happens.<\/li>\n<\/ul>\n<h3 class=\"western\">c. Spring Transaction Abstractions<\/h3>\n<p>Spring Transaction Management uses org.springframework.transaction.PlatformTransactionManager which is defined as below:<\/p>\n<pre class=\"EnlighterJSRAW\">public interface PlatformTransactionManager {\r\nTransactionStatus getTransaction(TransactionDefinition definition);\r\nthrows TransactionException;\r\nvoid commit(TransactionStatus status) throws TransactionException;\r\nvoid rollback(TransactionStatus status) throws TransactionException;\r\n}<\/pre>\n<p>Some above methods are described as follow:<br \/>\n<strong>i. TransactionStatus getTransaction(TransactionDefinition def)\u00a0<\/strong><br \/>\nThis method is for returning current active transaction or creates a new one.<br \/>\n<strong>ii. Void commit(TransactionStatus stat)<\/strong><br \/>\nThis method commits when the given transaction gets completed.<br \/>\n<strong>iii. Void rollback(TransactionStatus stat)<\/strong><br \/>\nThis method does rollback of the given transaction.<br \/>\nThe TransactionDefinition is a core interface which is defined as follows along with the description of the methods:<\/p>\n<pre class=\"EnlighterJSRAW\">public interface TransactionDefinition {\r\nint getPropagationBehavior();\r\nint getIsolationLevel();\r\nString getName();\r\nint getTimeout();\r\nboolean isReadOnly();\r\n}<\/pre>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-custom-event\/\">Do you know How to Design Customised Events in Spring Framework<\/a><\/strong><br \/>\n<strong>iv. Int getPropagationBehavior()<\/strong><br \/>\nThis method returns the propagation behavior an integer. Spring offers all the transaction options similar to EJB CMT.<br \/>\n<strong>v. Int getIsolationLevel()<\/strong><br \/>\nThis method returns the degree of which transaction is separated from other transactions.<br \/>\n<strong>vi. String getName()<\/strong><br \/>\nThis method is of string type which returns the name of a transaction.<br \/>\n<strong>vii. Int getTimeout()<\/strong><br \/>\nThis is an integer method which returns the time up to which the transaction should get completed.<br \/>\n<strong>viii. Bool isReadOnly()<\/strong><br \/>\nThis Boolean type method returns whether the transaction is a read-only transaction or not.<br \/>\nNow the TransactionStatus interface which controls query transaction status and execution in Spring Framework along with its methods are as follows:<\/p>\n<pre class=\"EnlighterJSRAW\">public interface TransactionStatus extends SavepointManager {\r\nboolean isNewTransaction();\r\nboolean hasSavepoint();\r\nvoid setRollbackOnly();\r\nboolean isRollbackOnly();\r\nboolean isCompleted();\r\n}<\/pre>\n<p><strong>ix. Bool hasSavepoint()<\/strong><br \/>\nThis method returns Boolean type for the transactions. It tells whether the transaction internally carries savepoint or not.<br \/>\n<strong>x. Bool isCompleted()<\/strong><br \/>\nThis method returns Boolean type for the transactions. It tells whether the transactions are complete or not.<br \/>\n<strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-logging\/\">Let&#8217;s Learn about Integration of Spring Logging with log4j<\/a><\/strong><br \/>\n<strong>xi. Bool isNewTransaction()<\/strong><br \/>\nThis method returns Boolean type. It returns true when the present transaction is new.<br \/>\n<strong>xii. Void setRollbackOnly()<\/strong><br \/>\nThis makes the transactions to be rollback only.<br \/>\n<strong>xiii. Bool isRollbackOnly()<\/strong><br \/>\nIt is a Boolean type method. This method returns whether the transaction is rollback only.<br \/>\nSo, this was all about Spring Transaction Management Tutorial. Hope you like our explanation.<\/p>\n<h2 class=\"western\">4. Conclusion<\/h2>\n<p>Hence, in this Spring Transaction Management Tutorial, you studied the meaning of the transaction along with its key ACID property. Also, you learned about the types of Spring transaction management and\u00a0their methods. Furthermore, if you have any doubt feel free to ask in the comment section.<br \/>\nRelated Topic-\u00a0<strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-event-handling\/\">Spring Event Handling<\/a><\/strong><br \/>\n<strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Spring_Framework\">For reference<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Objective In our last tutorial, we studied Spring JDBC Framework. Today, we will be learning about Spring Transaction Management.\u00a0In this article, you will learn about the types of Spring Transaction Management. Transaction Management&#46;&#46;&#46;<\/p>\n","protected":false},"author":5,"featured_media":19426,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[64],"tags":[229,1219,2147,2148,2149,2150,2151,2913,4087,6842,6843,6844,7326,13214,13310,13377,13378,13904,14886,15408],"class_list":["post-19421","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-spring","tag-acid","tag-atomicity","tag-bool-hassavepoint","tag-bool-iscompleted","tag-bool-isnewtransaction","tag-bool-isreadonly","tag-bool-isrollbackonly","tag-consistency","tag-duarbility","tag-int-getisolationlevel","tag-int-getpropagationbehavior","tag-int-gettimeout","tag-isolation","tag-spring-acid","tag-spring-framework-acid","tag-spring-transaction-abstractions","tag-spring-transaction-management","tag-string-getname","tag-transaction-abstractions-in-spring","tag-void-setrollbackonly"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Spring Transaction Management - Types and Methods - DataFlair<\/title>\n<meta name=\"description\" content=\"Spring Transaction Management - types of Transaction Management in Spring Framework, Spring ACID, Programmatic, Declarative Transaction Management\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring Transaction Management - Types and Methods - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Spring Transaction Management - types of Transaction Management in Spring Framework, Spring ACID, Programmatic, Declarative Transaction Management\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-06-27T04:10:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-09-15T06:57:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Spring-Transaction-Management-01.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spring Transaction Management - Types and Methods - DataFlair","description":"Spring Transaction Management - types of Transaction Management in Spring Framework, Spring ACID, Programmatic, Declarative Transaction Management","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:\/\/data-flair.training\/blogs\/spring-transaction-management\/","og_locale":"en_US","og_type":"article","og_title":"Spring Transaction Management - Types and Methods - DataFlair","og_description":"Spring Transaction Management - types of Transaction Management in Spring Framework, Spring ACID, Programmatic, Declarative Transaction Management","og_url":"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2018-06-27T04:10:47+00:00","article_modified_time":"2018-09-15T06:57:22+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Spring-Transaction-Management-01.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823"},"headline":"Spring Transaction Management &#8211; Types and Methods","datePublished":"2018-06-27T04:10:47+00:00","dateModified":"2018-09-15T06:57:22+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/"},"wordCount":845,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Spring-Transaction-Management-01.jpg","keywords":["ACID","Atomicity","Bool hasSavepoint()","Bool isCompleted()","Bool isNewTransaction()","Bool isReadOnly()","Bool isRollbackOnly()","Consistency","Duarbility","Int getIsolationLevel()","Int getPropagationBehavior()","Int getTimeout()","Isolation","Spring ACID","Spring Framework ACID","Spring Transaction Abstractions","Spring Transaction Management","String getName()","Transaction Abstractions in Spring","Void setRollbackOnly()"],"articleSection":["Spring Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/spring-transaction-management\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/","url":"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/","name":"Spring Transaction Management - Types and Methods - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Spring-Transaction-Management-01.jpg","datePublished":"2018-06-27T04:10:47+00:00","dateModified":"2018-09-15T06:57:22+00:00","description":"Spring Transaction Management - types of Transaction Management in Spring Framework, Spring ACID, Programmatic, Declarative Transaction Management","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/spring-transaction-management\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Spring-Transaction-Management-01.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Spring-Transaction-Management-01.jpg","width":1200,"height":628,"caption":"Spring Transaction Management"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/spring-transaction-management\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Reading data from external files","item":"https:\/\/data-flair.training\/blogs\/tag\/reading-data-from-external-files\/"},{"@type":"ListItem","position":3,"name":"Spring Transaction Management &#8211; Types and Methods"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team creates expert-level guides on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our goal is to empower learners with easy-to-understand content. Explore our resources for career growth and practical learning.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam1\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/19421","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=19421"}],"version-history":[{"count":3,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/19421\/revisions"}],"predecessor-version":[{"id":32603,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/19421\/revisions\/32603"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/19426"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=19421"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=19421"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=19421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}