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

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

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

    本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
    隨筆-230  評(píng)論-230  文章-8  trackbacks-0
    Spring把底的事務(wù)管理接口操象出來,形成了一套統(tǒng)一的事務(wù)管理方式,適用JTA和JDBC,Spring 提供了兩種事務(wù)管理方式,和種是編程式事務(wù)另一種是聲明式事務(wù),我不喜歡聲明式事務(wù),所以就不用管它了,編程式事務(wù)有兩種方式實(shí)現(xiàn),一種是使用事務(wù)管理模板,另一種是用PlatformTransactinManage,下面類是我寫的一個(gè)例程,僅供參考的,技術(shù)細(xì)節(jié)需參考相關(guān)文檔
    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事務(wù)模板例子
         *
         
    */
        
    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實(shí)現(xiàn)類管理事務(wù)
         *
         
    */
        
    public void PlatforTransactionManagerDemo(){
            ApplicationContext ctx
    =new ClassPathXmlApplicationContext("bean.xml"); 
            PlatformTransactionManager tm
    =(PlatformTransactionManager)ctx.getBean("transactionManager");
            DefaultTransactionDefinition dtf
    =new DefaultTransactionDefinition();//初始化一個(gè)默認(rèn)事務(wù)
            dtf.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);//設(shè)置事務(wù)定義對(duì)象的事務(wù)傳達(dá)室播屬性
            TransactionStatus ts=tm.getTransaction(dtf);//TransactionStatus代表事務(wù)對(duì)象本身,getTransaction開始一個(gè)事務(wù)
            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();
        }
        
    }
    對(duì)應(yīng)的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時(shí)只能通過applicationContext.xml來初始化容器
    final ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");

    mysql 亂碼問題由來已久,今天發(fā)現(xiàn)把my.ini中的字符編碼改為utf-8時(shí),mysql無法啟動(dòng)。在這個(gè)例子中我們使用了utf-8編碼,那么我們要把test數(shù)據(jù)庫的編碼,表編碼,字段編碼全改成utf-8就沒問題了,mysql-front停止開發(fā)了,郁悶
    posted on 2007-09-28 23:51 有貓相伴的日子 閱讀(1816) 評(píng)論(0)  編輯  收藏 所屬分類: spring
    本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
    主站蜘蛛池模板: 无码日韩人妻AV一区免费l | 四虎成人精品一区二区免费网站| 一级视频在线免费观看| 亚洲天堂福利视频| 久久亚洲国产中v天仙www| 免费99热在线观看| 最近最新的免费中文字幕| 99久在线国内在线播放免费观看| 日韩毛片一区视频免费| 亚洲第一第二第三第四第五第六 | 9420免费高清在线视频| 国产成人免费a在线视频app| 18女人水真多免费高清毛片| 久久精品成人免费国产片小草| 色婷婷六月亚洲综合香蕉| 亚洲国色天香视频| 噜噜噜亚洲色成人网站∨| 成年女人免费视频播放77777| 最近中文字幕mv免费高清在线| 国产无限免费观看黄网站| 视频免费1区二区三区| 亚洲AV无码男人的天堂| 亚洲人成www在线播放| 亚洲综合在线成人一区| 亚洲A∨精品一区二区三区| 成人国产mv免费视频| 妞干网免费视频在线观看| 99视频在线精品免费观看6| 国产h肉在线视频免费观看| 18成禁人视频免费网站| 精品成在人线AV无码免费看 | 相泽亚洲一区中文字幕| 亚洲成人高清在线| 亚洲精品一级无码鲁丝片| 亚洲人成无码网WWW| 在线日韩日本国产亚洲| 亚洲午夜久久久久妓女影院| 在线亚洲人成电影网站色www| 国产亚洲欧洲Aⅴ综合一区| 亚洲熟妇无码AV在线播放| 亚洲国产精品无码一线岛国|