Spring jdbc 以及事務(wù)管理

一,Springjdbc的一些常用類

spring與jdbc.png

這里有兩個(gè)常用的類jdbcDaoSupport和jdbcTemplate

1废士,jdbcDaoSupport提供了jdbcTemplate和DataSource的setter方法溪厘,可以通過它們獲取到j(luò)dbcTemplate和DataSource
2骡显,在jdbcTemplate里面封裝了基本的對數(shù)據(jù)庫的一些操作
3,如果想要操作數(shù)據(jù)庫贬媒,直接繼承jdbcDaoSupport和jdbcTemplate這兩個(gè)類或者直接 使用di方式直接注入這兩個(gè)類

二,Spring的事務(wù)控制

1肘习,事務(wù)架構(gòu)

spring的事務(wù)的結(jié)構(gòu).png
PlatformTransactionManager是事務(wù)處理的核心接口际乘,規(guī)定了事務(wù)開啟,提交和回滾漂佩,AbstractPlatformTransactionManager是實(shí)現(xiàn)PlatformTransactionManager的抽象類脖含,已經(jīng)實(shí)現(xiàn)了事務(wù)的提交(commit)和回滾(rollback),對于采取不同的數(shù)據(jù)技術(shù)投蝉,事務(wù)開啟的方式是不一樣的养葵。

2,事務(wù)的狀態(tài)以及定義

事務(wù)定義


image.png

事務(wù)狀態(tài)


image.png
在事務(wù)控制中又涉及到TransactionStatus和TransactionDefinition兩個(gè)類瘩缆。一個(gè)描述事務(wù)的狀態(tài)信息(是否為新的事務(wù)关拒,事務(wù)是否完成),另外一個(gè)描述事務(wù)的傳播屬性(解決事務(wù)的嵌套問題)和事務(wù)的隔離機(jī)制以及是否只讀

3,實(shí)例操作

dao層以及實(shí)現(xiàn)

//dao
package com.fiberhome.spring.jdbc.dao;

public interface PersonDao {
  public void savePerson(String sql);

}
//daoImpl
package com.fiberhome.spring.jdbc.dao;

import org.springframework.jdbc.core.support.JdbcDaoSupport;

public class PersonDaoImpl extends JdbcDaoSupport implements PersonDao  {
   
  @Override
  public void savePerson(String sql) {
   this.getJdbcTemplate().execute(sql);
  }

}

service層以及實(shí)現(xiàn)

//service
package com.fiberhome.spring.jdbc.service;

public interface PersonService {
public void savePerson();
}
//serviceImpl
package com.fiberhome.spring.jdbc.service;

import com.fiberhome.spring.jdbc.dao.PersonDao;

public class PersonServiceImpl implements PersonService{

  private PersonDao dao;
  public void setDao(PersonDao dao) {
    this.dao = dao;
  }
  public void savePerson() {
    
    dao.savePerson("INSERT INTO ist_library_user (NAME ) VALUES('xixi')");
    int a=1/0;
     dao.savePerson("INSERT INTO ist_library_user (NAME ) VALUES('xixi')");
  }

}

xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/aop 
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/tx 
           http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- 獲取dataSource-->
    <bean
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <value> classpath:jdbc.properties</value>
        </property>
    </bean>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

    </bean>


    <bean id="personDao" class="com.fiberhome.spring.jdbc.dao.PersonDaoImpl">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>

    </bean>

    <bean id="personService" class="com.fiberhome.spring.jdbc.service.PersonServiceImpl">
        <property name="dao">
            <ref bean="personDao" />
        </property>
    </bean>
    
    
    <!-- 事務(wù)管理器 告訴spring容器要采用什么樣的技術(shù)處理事務(wù) -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
    </bean>
    
    
    <tx:advice id="tx" transaction-manager="transactionManager">

        <tx:attributes>
<!--告知事務(wù)處理的策略-->
            <tx:method name="save*" propagation="REQUIRED" isolation="DEFAULT"
                read-only="false" />

        </tx:attributes>
    </tx:advice>
    <aop:config>
        <aop:pointcut
            expression="execution(* com.fiberhome.spring.jdbc.service.PersonServiceImpl.*(..))"
            id="perform" />
        <aop:advisor advice-ref="tx" pointcut-ref="perform" />

    </aop:config>

</beans>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末着绊,一起剝皮案震驚了整個(gè)濱河市谐算,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌归露,老刑警劉巖氯夷,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異靶擦,居然都是意外死亡腮考,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門玄捕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來踩蔚,“玉大人,你說我怎么就攤上這事枚粘∠诿觯” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵馍迄,是天一觀的道長福也。 經(jīng)常有香客問我,道長攀圈,這世上最難降的妖魔是什么暴凑? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮赘来,結(jié)果婚禮上现喳,老公的妹妹穿的比我還像新娘。我一直安慰自己犬辰,他們只是感情好嗦篱,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幌缝,像睡著了一般灸促。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涵卵,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天浴栽,我揣著相機(jī)與錄音,去河邊找鬼缘厢。 笑死吃度,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贴硫。 我是一名探鬼主播椿每,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼剑刑,長吁一口氣:“原來是場噩夢啊……” “哼炼绘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤芒澜,失蹤者是張志新(化名)和其女友劉穎巴粪,沒想到半個(gè)月后卒废,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徒河,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年痴突,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搂蜓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辽装,死狀恐怖帮碰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拾积,我是刑警寧澤殉挽,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站拓巧,受9級特大地震影響斯碌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肛度,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一傻唾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贤斜,春花似錦策吠、人聲如沸逛裤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽带族。三九已至锁荔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蝙砌,已是汗流浹背阳堕。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留择克,地道東北人恬总。 一個(gè)月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像肚邢,于是被迫代替她去往敵國和親壹堰。 傳聞我的和親對象是個(gè)殘疾皇子拭卿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 很多人喜歡這篇文章,特此同步過來 由淺入深談?wù)搒pring事務(wù) 前言 這篇其實(shí)也要?dú)w納到《常識(shí)》系列中贱纠,但這重點(diǎn)又...
    碼農(nóng)戲碼閱讀 4,719評論 2 59
  • 5.Spring的事務(wù) 通常情況下峻厚,J2EE有2種事務(wù)管理方式:全局事務(wù)和本地事務(wù),2種事務(wù)都比較明顯的缺陷谆焊。 全...
    FTOLsXD閱讀 1,502評論 0 8
  • 一.Spring對編程式事務(wù)的支持 Spring中的事務(wù)分為物理事務(wù)和邏輯事務(wù)惠桃;物理事務(wù):就是底層數(shù)據(jù)庫提供的事務(wù)...
    zlb閱讀 7,608評論 0 5
  • 對大多數(shù)Java開發(fā)者來說,Spring事務(wù)管理是Spring應(yīng)用中最常用的功能辖试,使用也比較簡單辜王。本文主要從三個(gè)方...
    sherlockyb閱讀 3,199評論 0 18
  • 1. new window will be blocked if it's opened by js in aja...
    MengchunCao閱讀 304評論 0 0