{"id":527,"date":"2012-07-23T21:03:33","date_gmt":"2012-07-23T13:03:33","guid":{"rendered":"http:\/\/blog.amjet.cc\/IT\/?p=527"},"modified":"2013-03-24T19:15:33","modified_gmt":"2013-03-24T11:15:33","slug":"spring-framework-transaction-control","status":"publish","type":"post","link":"https:\/\/blog.amjet.biz\/IT\/?p=527","title":{"rendered":"Spring framework transaction control"},"content":{"rendered":"<p>\u9019\u908a\u53ea\u8a18\u8a2d\u5b9a\u7684\u91cd\u9ede\u4ee5 JDBC \u70ba\u4f8b\uff0cHibernate \u7684\u8a2d\u5b9a\u4e5f\u5f88\u985e\u4f3c, \u4e3b\u8981\u662f\u00a0tx:annotation-driven\u3002DAO \u52a0\u4e0a annotation \u6307\u5b9a\u8981\u505a transaction \u7ba1\u7406\uff0c\u6ce8\u610f\u00a0rollbackFor \u7684\u8a2d\u5b9a\uff0c\u4e00\u65e6 method catch \u5230 exception\uff0cmethod \u5167\u7684\u7570\u52d5\u90fd\u6703 rollback\u3002<\/p>\n<p>applicationContext.xml \u8a2d\u5b9a<\/p>\n<div>&lt;tx:annotation-driven transaction-manager=&#8221;myManager&#8221;\/&gt;<\/div>\n<div>\n<p>&lt;bean id=&#8221;myManager&#8221; class=&#8221;org.springframework.jdbc.datasource.DataSourceTransactionManager&#8221;&gt;<br \/>\n&lt;property name=&#8221;dataSource&#8221; ref=&#8221;myDS&#8221;\/&gt;<br \/>\n&lt;\/bean&gt;<\/p>\n<p>&lt;bean id=&#8221;myDS&#8221; class=&#8221;org.apache.commons.dbcp.BasicDataSource&#8221; destroy-method=&#8221;close&#8221;&gt;<br \/>\n&lt;property name=&#8221;driverClassName&#8221; value=&#8221;${myds.driver}&#8221;\/&gt;<br \/>\n&lt;property name=&#8221;url&#8221; value=&#8221;${myds.url}&#8221;\/&gt;<br \/>\n&lt;property name=&#8221;username&#8221; value=&#8221;${myds.username}&#8221;\/&gt;<br \/>\n&lt;property name=&#8221;password&#8221; value=&#8221;${myds.password}&#8221;\/&gt;<br \/>\n&lt;\/bean&gt;<\/p>\n<\/div>\n<div>myDao.java (DAO interface \u7bc4\u4f8b)<\/div>\n<div><\/div>\n<div>@Transactional(rollbackFor=Exception.class)<br \/>\npublic interface myDao {<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p>[ratings]<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u9019\u908a\u53ea\u8a18\u8a2d\u5b9a\u7684\u91cd\u9ede\u4ee5 JDBC \u70ba\u4f8b\uff0cHibernate \u7684\u8a2d\u5b9a\u4e5f\u5f88\u985e\u4f3c, \u4e3b\u8981\u662f\u00a0tx:annotation-driven\u3002DAO \u52a0\u4e0a annotation \u6307\u5b9a\u8981\u505a transaction \u7ba1\u7406\uff0c\u6ce8\u610f\u00a0rollbackFor \u7684\u8a2d\u5b9a\uff0c\u4e00\u65e6 method catch \u5230 exception\uff0cmethod \u5167\u7684\u7570\u52d5\u90fd\u6703 rollback\u3002 applicationContext.xml \u8a2d\u5b9a &lt;tx:annotation-driven transaction-manager=&#8221;myManager&#8221;\/&gt; &lt;bean id=&#8221;myManager&#8221; class=&#8221;org.springframework.jdbc.datasource.DataSourceTransactionManager&#8221;&gt; &lt;property name=&#8221;dataSource&#8221; ref=&#8221;myDS&#8221;\/&gt; &lt;\/bean&gt; &lt;bean id=&#8221;myDS&#8221; class=&#8221;org.apache.commons.dbcp.BasicDataSource&#8221; destroy-method=&#8221;close&#8221;&gt; &lt;property name=&#8221;driverClassName&#8221; value=&#8221;${myds.driver}&#8221;\/&gt; &lt;property name=&#8221;url&#8221; value=&#8221;${myds.url}&#8221;\/&gt; &lt;property name=&#8221;username&#8221; value=&#8221;${myds.username}&#8221;\/&gt; &lt;property name=&#8221;password&#8221; value=&#8221;${myds.password}&#8221;\/&gt; &lt;\/bean&gt; myDao.java (DAO interface \u7bc4\u4f8b) @Transactional(rollbackFor=Exception.class) public interface myDao { &nbsp; [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-527","post","type-post","status-publish","format-standard","hentry","category-java"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u9019\u908a\u53ea\u8a18\u8a2d\u5b9a\u7684\u91cd\u9ede\u4ee5 JDBC \u70ba\u4f8b\uff0cHibernate \u7684\u8a2d\u5b9a\u4e5f\u5f88\u985e\u4f3c, \u4e3b\u8981\u662f tx:annotation-driven\u3002DAO \u52a0\u4e0a annotation \u6307\u5b9a\u8981\u505a transaction \u7ba1\u7406\uff0c\u6ce8\u610f rollbackFor \u7684\u8a2d\u5b9a\uff0c\u4e00\u65e6 method catch \u5230 exception\uff0cmethod \u5167\u7684\u7570\u52d5\u90fd\u6703 rollback\u3002 applicationContext.xml \u8a2d\u5b9a myDao.java (DAO interface \u7bc4\u4f8b) @Transactional(rollbackFor=Exception.class) public interface myDao {\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"vincent\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/blog.amjet.biz\/IT\/?p=527\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"AmJet IT Blog | for IT professionals\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Spring framework transaction control | AmJet IT Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"\u9019\u908a\u53ea\u8a18\u8a2d\u5b9a\u7684\u91cd\u9ede\u4ee5 JDBC \u70ba\u4f8b\uff0cHibernate \u7684\u8a2d\u5b9a\u4e5f\u5f88\u985e\u4f3c, \u4e3b\u8981\u662f tx:annotation-driven\u3002DAO \u52a0\u4e0a annotation \u6307\u5b9a\u8981\u505a transaction \u7ba1\u7406\uff0c\u6ce8\u610f rollbackFor \u7684\u8a2d\u5b9a\uff0c\u4e00\u65e6 method catch \u5230 exception\uff0cmethod \u5167\u7684\u7570\u52d5\u90fd\u6703 rollback\u3002 applicationContext.xml \u8a2d\u5b9a myDao.java (DAO interface \u7bc4\u4f8b) @Transactional(rollbackFor=Exception.class) public interface myDao {\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/blog.amjet.biz\/IT\/?p=527\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2012-07-23T13:03:33+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2013-03-24T11:15:33+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Spring framework transaction control | AmJet IT Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"\u9019\u908a\u53ea\u8a18\u8a2d\u5b9a\u7684\u91cd\u9ede\u4ee5 JDBC \u70ba\u4f8b\uff0cHibernate \u7684\u8a2d\u5b9a\u4e5f\u5f88\u985e\u4f3c, \u4e3b\u8981\u662f tx:annotation-driven\u3002DAO \u52a0\u4e0a annotation \u6307\u5b9a\u8981\u505a transaction \u7ba1\u7406\uff0c\u6ce8\u610f rollbackFor \u7684\u8a2d\u5b9a\uff0c\u4e00\u65e6 method catch \u5230 exception\uff0cmethod \u5167\u7684\u7570\u52d5\u90fd\u6703 rollback\u3002 applicationContext.xml \u8a2d\u5b9a myDao.java (DAO interface \u7bc4\u4f8b) @Transactional(rollbackFor=Exception.class) public interface myDao {\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=527#article\",\"name\":\"Spring framework transaction control | AmJet IT Blog\",\"headline\":\"Spring framework transaction control\",\"author\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?author=2#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/#organization\"},\"datePublished\":\"2012-07-23T21:03:33+08:00\",\"dateModified\":\"2013-03-24T19:15:33+08:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=527#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=527#webpage\"},\"articleSection\":\"Java\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=527#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=5#listItem\",\"name\":\"Developer\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=5#listItem\",\"position\":2,\"name\":\"Developer\",\"item\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=5\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=8#listItem\",\"name\":\"Java\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=8#listItem\",\"position\":3,\"name\":\"Java\",\"item\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=8\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=527#listItem\",\"name\":\"Spring framework transaction control\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=5#listItem\",\"name\":\"Developer\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=527#listItem\",\"position\":4,\"name\":\"Spring framework transaction control\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=8#listItem\",\"name\":\"Java\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/#organization\",\"name\":\"AmJet Digital\",\"description\":\"for IT professionals\",\"url\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?author=2#author\",\"url\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?author=2\",\"name\":\"vincent\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=527#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c6bcd6e8e7e1c9bce74184354da4a5c294d71657c7abc161841c4799d1b1a46?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"vincent\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=527#webpage\",\"url\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=527\",\"name\":\"Spring framework transaction control | AmJet IT Blog\",\"description\":\"\\u9019\\u908a\\u53ea\\u8a18\\u8a2d\\u5b9a\\u7684\\u91cd\\u9ede\\u4ee5 JDBC \\u70ba\\u4f8b\\uff0cHibernate \\u7684\\u8a2d\\u5b9a\\u4e5f\\u5f88\\u985e\\u4f3c, \\u4e3b\\u8981\\u662f tx:annotation-driven\\u3002DAO \\u52a0\\u4e0a annotation \\u6307\\u5b9a\\u8981\\u505a transaction \\u7ba1\\u7406\\uff0c\\u6ce8\\u610f rollbackFor \\u7684\\u8a2d\\u5b9a\\uff0c\\u4e00\\u65e6 method catch \\u5230 exception\\uff0cmethod \\u5167\\u7684\\u7570\\u52d5\\u90fd\\u6703 rollback\\u3002 applicationContext.xml \\u8a2d\\u5b9a myDao.java (DAO interface \\u7bc4\\u4f8b) @Transactional(rollbackFor=Exception.class) public interface myDao {\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=527#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?author=2#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?author=2#author\"},\"datePublished\":\"2012-07-23T21:03:33+08:00\",\"dateModified\":\"2013-03-24T19:15:33+08:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/#website\",\"url\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/\",\"name\":\"AmJet IT Blog\",\"description\":\"for IT professionals\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Spring framework transaction control | AmJet IT Blog","description":"\u9019\u908a\u53ea\u8a18\u8a2d\u5b9a\u7684\u91cd\u9ede\u4ee5 JDBC \u70ba\u4f8b\uff0cHibernate \u7684\u8a2d\u5b9a\u4e5f\u5f88\u985e\u4f3c, \u4e3b\u8981\u662f tx:annotation-driven\u3002DAO \u52a0\u4e0a annotation \u6307\u5b9a\u8981\u505a transaction \u7ba1\u7406\uff0c\u6ce8\u610f rollbackFor \u7684\u8a2d\u5b9a\uff0c\u4e00\u65e6 method catch \u5230 exception\uff0cmethod \u5167\u7684\u7570\u52d5\u90fd\u6703 rollback\u3002 applicationContext.xml \u8a2d\u5b9a myDao.java (DAO interface \u7bc4\u4f8b) @Transactional(rollbackFor=Exception.class) public interface myDao {","canonical_url":"https:\/\/blog.amjet.biz\/IT\/?p=527","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.amjet.biz\/IT\/?p=527#article","name":"Spring framework transaction control | AmJet IT Blog","headline":"Spring framework transaction control","author":{"@id":"https:\/\/blog.amjet.biz\/IT\/?author=2#author"},"publisher":{"@id":"https:\/\/blog.amjet.biz\/IT\/#organization"},"datePublished":"2012-07-23T21:03:33+08:00","dateModified":"2013-03-24T19:15:33+08:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/blog.amjet.biz\/IT\/?p=527#webpage"},"isPartOf":{"@id":"https:\/\/blog.amjet.biz\/IT\/?p=527#webpage"},"articleSection":"Java"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.amjet.biz\/IT\/?p=527#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT#listItem","position":1,"name":"Home","item":"https:\/\/blog.amjet.biz\/IT","nextItem":{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?cat=5#listItem","name":"Developer"}},{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?cat=5#listItem","position":2,"name":"Developer","item":"https:\/\/blog.amjet.biz\/IT\/?cat=5","nextItem":{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?cat=8#listItem","name":"Java"},"previousItem":{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?cat=8#listItem","position":3,"name":"Java","item":"https:\/\/blog.amjet.biz\/IT\/?cat=8","nextItem":{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?p=527#listItem","name":"Spring framework transaction control"},"previousItem":{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?cat=5#listItem","name":"Developer"}},{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?p=527#listItem","position":4,"name":"Spring framework transaction control","previousItem":{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?cat=8#listItem","name":"Java"}}]},{"@type":"Organization","@id":"https:\/\/blog.amjet.biz\/IT\/#organization","name":"AmJet Digital","description":"for IT professionals","url":"https:\/\/blog.amjet.biz\/IT\/"},{"@type":"Person","@id":"https:\/\/blog.amjet.biz\/IT\/?author=2#author","url":"https:\/\/blog.amjet.biz\/IT\/?author=2","name":"vincent","image":{"@type":"ImageObject","@id":"https:\/\/blog.amjet.biz\/IT\/?p=527#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/8c6bcd6e8e7e1c9bce74184354da4a5c294d71657c7abc161841c4799d1b1a46?s=96&d=mm&r=g","width":96,"height":96,"caption":"vincent"}},{"@type":"WebPage","@id":"https:\/\/blog.amjet.biz\/IT\/?p=527#webpage","url":"https:\/\/blog.amjet.biz\/IT\/?p=527","name":"Spring framework transaction control | AmJet IT Blog","description":"\u9019\u908a\u53ea\u8a18\u8a2d\u5b9a\u7684\u91cd\u9ede\u4ee5 JDBC \u70ba\u4f8b\uff0cHibernate \u7684\u8a2d\u5b9a\u4e5f\u5f88\u985e\u4f3c, \u4e3b\u8981\u662f tx:annotation-driven\u3002DAO \u52a0\u4e0a annotation \u6307\u5b9a\u8981\u505a transaction \u7ba1\u7406\uff0c\u6ce8\u610f rollbackFor \u7684\u8a2d\u5b9a\uff0c\u4e00\u65e6 method catch \u5230 exception\uff0cmethod \u5167\u7684\u7570\u52d5\u90fd\u6703 rollback\u3002 applicationContext.xml \u8a2d\u5b9a myDao.java (DAO interface \u7bc4\u4f8b) @Transactional(rollbackFor=Exception.class) public interface myDao {","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/blog.amjet.biz\/IT\/#website"},"breadcrumb":{"@id":"https:\/\/blog.amjet.biz\/IT\/?p=527#breadcrumblist"},"author":{"@id":"https:\/\/blog.amjet.biz\/IT\/?author=2#author"},"creator":{"@id":"https:\/\/blog.amjet.biz\/IT\/?author=2#author"},"datePublished":"2012-07-23T21:03:33+08:00","dateModified":"2013-03-24T19:15:33+08:00"},{"@type":"WebSite","@id":"https:\/\/blog.amjet.biz\/IT\/#website","url":"https:\/\/blog.amjet.biz\/IT\/","name":"AmJet IT Blog","description":"for IT professionals","inLanguage":"en-US","publisher":{"@id":"https:\/\/blog.amjet.biz\/IT\/#organization"}}]},"og:locale":"en_US","og:site_name":"AmJet IT Blog | for IT professionals","og:type":"article","og:title":"Spring framework transaction control | AmJet IT Blog","og:description":"\u9019\u908a\u53ea\u8a18\u8a2d\u5b9a\u7684\u91cd\u9ede\u4ee5 JDBC \u70ba\u4f8b\uff0cHibernate \u7684\u8a2d\u5b9a\u4e5f\u5f88\u985e\u4f3c, \u4e3b\u8981\u662f tx:annotation-driven\u3002DAO \u52a0\u4e0a annotation \u6307\u5b9a\u8981\u505a transaction \u7ba1\u7406\uff0c\u6ce8\u610f rollbackFor \u7684\u8a2d\u5b9a\uff0c\u4e00\u65e6 method catch \u5230 exception\uff0cmethod \u5167\u7684\u7570\u52d5\u90fd\u6703 rollback\u3002 applicationContext.xml \u8a2d\u5b9a myDao.java (DAO interface \u7bc4\u4f8b) @Transactional(rollbackFor=Exception.class) public interface myDao {","og:url":"https:\/\/blog.amjet.biz\/IT\/?p=527","article:published_time":"2012-07-23T13:03:33+00:00","article:modified_time":"2013-03-24T11:15:33+00:00","twitter:card":"summary","twitter:title":"Spring framework transaction control | AmJet IT Blog","twitter:description":"\u9019\u908a\u53ea\u8a18\u8a2d\u5b9a\u7684\u91cd\u9ede\u4ee5 JDBC \u70ba\u4f8b\uff0cHibernate \u7684\u8a2d\u5b9a\u4e5f\u5f88\u985e\u4f3c, \u4e3b\u8981\u662f tx:annotation-driven\u3002DAO \u52a0\u4e0a annotation \u6307\u5b9a\u8981\u505a transaction \u7ba1\u7406\uff0c\u6ce8\u610f rollbackFor \u7684\u8a2d\u5b9a\uff0c\u4e00\u65e6 method catch \u5230 exception\uff0cmethod \u5167\u7684\u7570\u52d5\u90fd\u6703 rollback\u3002 applicationContext.xml \u8a2d\u5b9a myDao.java (DAO interface \u7bc4\u4f8b) @Transactional(rollbackFor=Exception.class) public interface myDao {"},"aioseo_meta_data":{"post_id":"527","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-24 01:26:19","updated":"2025-06-05 09:25:05","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/blog.amjet.biz\/IT\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/blog.amjet.biz\/IT\/?cat=5\" title=\"Developer\">Developer<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/blog.amjet.biz\/IT\/?cat=8\" title=\"Java\">Java<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tSpring framework transaction control\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/blog.amjet.biz\/IT"},{"label":"Developer","link":"https:\/\/blog.amjet.biz\/IT\/?cat=5"},{"label":"Java","link":"https:\/\/blog.amjet.biz\/IT\/?cat=8"},{"label":"Spring framework transaction control","link":"https:\/\/blog.amjet.biz\/IT\/?p=527"}],"_links":{"self":[{"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/posts\/527","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=527"}],"version-history":[{"count":6,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/posts\/527\/revisions"}],"predecessor-version":[{"id":790,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/posts\/527\/revisions\/790"}],"wp:attachment":[{"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=527"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=527"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}