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

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

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

    隨筆-153  評論-235  文章-19  trackbacks-0

        spring 對 JdbcTemplate……的事務管理不用擔心。就是對直接Jdbc實現的Dao事務管理有點小問題,如:我直接,用dataSource.getConnection()。spring是管理不了事務的。原因是Jdbc實現的Dao里的connection是自動提交的。要改用經過spring 處理過的connection = DataSourceUtil.getConnection(dataSource);才行。
        我這有個例子——用戶注冊,有備份。只是例子而且。
        下面是原始的Dao實現,
    備份方法:

        public User backUp(User user) throws SQLException {
            Connection conn 
    = dataSource.getConnection();
            
    try {
                PreparedStatement pstmt 
    = conn.prepareStatement("insert into user(name) values (?)");
                pstmt.setString(
    1, user.getName()+" 備份");
                pstmt.executeUpdate();
                
                pstmt 
    = conn.prepareStatement("select last_insert_id()");
                ResultSet rs 
    = pstmt.executeQuery();
                
    if(rs != null && rs.next()) {
                    user.setUId(rs.getInt(
    1));
                }
            } 
    catch (SQLException e) {
                
    // TODO Auto-generated catch block
                throw e;
            } 
    finally {
                
    if(conn != null) {
                    
    try {
                        conn.close();
                    } 
    catch (SQLException e) {
                                    System.out.println(
    "數據庫連接關閉失敗!");
                    }
                }
            }
            
    return user;
        }

    現在要改成:
        public User backUp(User user) throws SQLException {
            Connection conn 
    = DataSourceUtils.getConnection(dataSource);
            
    try {
                PreparedStatement pstmt 
    = conn.prepareStatement("insert into user(name) values (?)");
                pstmt.setString(
    1, user.getName()+" 備份");
                pstmt.executeUpdate();
                
                pstmt 
    = conn.prepareStatement("select last_insert_id()");
                ResultSet rs 
    = pstmt.executeQuery();
                
    if(rs != null && rs.next()) {
                    user.setUId(rs.getInt(
    1));
                }
            } 
    catch (SQLException e) {
                
    throw e;
            } 
    finally {
                DataSourceUtils.releaseConnection(conn, dataSource);
            }
            
    return user;
        }

    然后你在邏輯層就可以用spring的任何方式管理事務了。
    如:注冊
        public User register(User user) throws SQLException {
            userDao.backUp(user);
            userDao.insert(user);
            
    return user;
        }


    posted on 2007-08-20 11:22 流浪汗 閱讀(653) 評論(0)  編輯  收藏 所屬分類: Spring
    主站蜘蛛池模板: 两个人看的www免费| 国产亚洲漂亮白嫩美女在线| 西西人体免费视频| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 久久久久亚洲AV无码永不| 精品一区二区三区免费| 亚洲AV成人精品网站在线播放| 日本黄色动图免费在线观看| 内射干少妇亚洲69XXX| 1000部拍拍拍18勿入免费视频下载| 亚洲AV日韩AV高潮无码专区| 久久国产色AV免费看| 亚洲精品视频在线观看视频| 98精品全国免费观看视频| 亚洲小视频在线播放| 日韩免费a级毛片无码a∨ | 亚洲狠狠爱综合影院婷婷| 国产福利免费视频| 久久久久亚洲精品影视| 无码国产精品一区二区免费式影视| 亚洲va久久久久| 青青青国产色视频在线观看国产亚洲欧洲国产综合| 男男黄GAY片免费网站WWW| 亚洲中文久久精品无码| **真实毛片免费观看| 99亚洲乱人伦aⅴ精品| 国产福利电影一区二区三区,亚洲国模精品一区| 国产免费区在线观看十分钟| 亚洲精选在线观看| 午夜视频在线在免费| 一道本不卡免费视频| 亚洲第一极品精品无码久久| 麻豆最新国产剧情AV原创免费 | 国产a v无码专区亚洲av | 一个人免费日韩不卡视频| 久久乐国产综合亚洲精品| 久久精品亚洲乱码伦伦中文| 91精品国产免费入口| 青娱乐在线视频免费观看| 91亚洲精品第一综合不卡播放| 国产成人免费全部网站 |