<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    本站不再更新,歡迎光臨 java開發技術網
    隨筆-230  評論-230  文章-8  trackbacks-0
    Spring把底的事務管理接口操象出來,形成了一套統一的事務管理方式,適用JTA和JDBC,Spring 提供了兩種事務管理方式,和種是編程式事務另一種是聲明式事務,我不喜歡聲明式事務,所以就不用管它了,編程式事務有兩種方式實現,一種是使用事務管理模板,另一種是用PlatformTransactinManage,下面類是我寫的一個例程,僅供參考的,技術細節需參考相關文檔
    package com.spring;

    import java.sql.Connection;
    import java.sql.Statement;

    import javax.sql.DataSource;

    import org.springframework.beans.factory.xml.XmlBeanFactory;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.core.io.ClassPathResource;
    import org.springframework.jdbc.datasource.DataSourceUtils;
    import org.springframework.orm.toplink.TopLinkTransactionManager;
    import org.springframework.transaction.PlatformTransactionManager;
    import org.springframework.transaction.TransactionDefinition;
    import org.springframework.transaction.TransactionStatus;
    import org.springframework.transaction.support.DefaultTransactionDefinition;
    import org.springframework.transaction.support.TransactionCallbackWithoutResult;
    import org.springframework.transaction.support.TransactionTemplate;

    public class TransactionDemo {
        
    /**
         * spring事務模板例子
         *
         
    */
        
    public void templateTemplateDemo(){
            
    final ApplicationContext ctx=new ClassPathXmlApplicationContext("src/bean.xml"); 
            
    //ClassPathResource cpr=new ClassPathResource("bean.xml");
            
    //final XmlBeanFactory factory=new XmlBeanFactory(cpr);
            PlatformTransactionManager ptm=(PlatformTransactionManager)ctx.getBean("transactionManager");
            TransactionTemplate tt
    =new TransactionTemplate(ptm);
            tt.execute(
    new TransactionCallbackWithoutResult(){
                @Override
                
    protected void doInTransactionWithoutResult(TransactionStatus ts) {
                    
    try{
                        DataSource ds
    =(DataSource)ctx.getBean("dataSource");
                        Connection conn
    =DataSourceUtils.getConnection(ds);
                        Statement stmt
    =conn.createStatement();
                        stmt.execute(
    "insert into tuser values(123,'裴德萬')");
                        
                    }
    catch(Exception e){
                        ts.setRollbackOnly();
                        e.printStackTrace();
                    }
                }
                
            });
        }
        
    /**
         * 使用PlatforTransactionManager實現類管理事務
         *
         
    */
        
    public void PlatforTransactionManagerDemo(){
            ApplicationContext ctx
    =new ClassPathXmlApplicationContext("bean.xml"); 
            PlatformTransactionManager tm
    =(PlatformTransactionManager)ctx.getBean("transactionManager");
            DefaultTransactionDefinition dtf
    =new DefaultTransactionDefinition();//初始化一個默認事務
            dtf.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);//設置事務定義對象的事務傳達室播屬性
            TransactionStatus ts=tm.getTransaction(dtf);//TransactionStatus代表事務對象本身,getTransaction開始一個事務
            try{
                DataSource ds
    =(DataSource)ctx.getBean("dataSource");
                Connection conn
    =DataSourceUtils.getConnection(ds);
                Statement stmt
    =conn.createStatement();
                stmt.execute(
    "insert into tuser values(123,'裴德萬')");
                tm.commit(ts);
            }
    catch(Exception e){
                tm.rollback(ts);
                e.printStackTrace();
            }
        }
        
    public static void main(String[] args){
            TransactionDemo td
    =new TransactionDemo();
            td.templateTemplateDemo();
        }
        
    }
    對應的XML文件配置(jdbc)如下:
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            
    <property name="driverClassName">
                
    <value>com.mysql.jdbc.Driver</value>
            
    </property>
            
    <property name="url">
                
    <value>jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8</value>
            
    </property>
            
    <property name="username">
                
    <value>root</value>
            
    </property>
            
    <property name="password">
                
    <value>123456</value>
            
    </property>
            
        
    </bean>

    JTA的配置如下
        <bean id="transactionManager" class="org.springframework.jndi.JndiObjectFactoryBean">
        
    <property name="dataSource">
               
    <property name="jndiName">
                  
    <value>jdbc/kkmei</value>
               
    </property>
        
    </bean>

    <bean id="jtatm" class="org.springframework.transaction.jta.JtaTransactionManager">
       
    </bean>
    使用ApplicationContext時只能通過applicationContext.xml來初始化容器
    final ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");

    mysql 亂碼問題由來已久,今天發現把my.ini中的字符編碼改為utf-8時,mysql無法啟動。在這個例子中我們使用了utf-8編碼,那么我們要把test數據庫的編碼,表編碼,字段編碼全改成utf-8就沒問題了,mysql-front停止開發了,郁悶
    posted on 2007-09-28 23:51 有貓相伴的日子 閱讀(1815) 評論(0)  編輯  收藏 所屬分類: spring
    本站不再更新,歡迎光臨 java開發技術網
    主站蜘蛛池模板: 亚洲一区二区三区丝袜| 暖暖在线日本免费中文| 一个人免费观看www视频| 亚洲午夜精品一区二区麻豆| 久久精品视频亚洲| 久久久久噜噜噜亚洲熟女综合| 女人18一级毛片免费观看| 亚洲高清中文字幕综合网| 亚洲AV永久纯肉无码精品动漫| 亚洲中文字幕丝袜制服一区| 日本牲交大片免费观看| 成人毛片免费播放| 99久久99这里只有免费费精品| 精品一区二区三区无码免费视频 | 国产免费久久精品99久久| 亚洲精品无AMM毛片| 亚洲 欧洲 自拍 另类 校园| 亚洲视频在线观看地址| 亚洲男人天堂av| 亚洲视频在线观看| 亚洲色图国产精品| 亚洲综合精品一二三区在线| 亚洲高清在线视频| 亚洲AV成人片色在线观看高潮| 亚洲精品成人网站在线观看| 国产成人A亚洲精V品无码| 亚洲中文字幕无码一区二区三区 | 亚洲av无码专区青青草原| 亚洲一区二区三区高清在线观看 | 精品国产免费一区二区| 在线免费观看一级片| 免费的一级黄色片| 亚洲AV日韩精品一区二区三区| 亚洲av区一区二区三| 色噜噜亚洲精品中文字幕| 亚洲人成网站在线观看播放| 日韩亚洲人成在线综合日本| 久久久久亚洲AV片无码| 亚洲精品在线免费看| 亚洲精品第一综合99久久| 亚洲第一综合天堂另类专|