欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

在javaee的三層結(jié)構(gòu)中,為什么事物存在于業(yè)務(wù)層

我們都知道在javaee實(shí)際開發(fā)中,分為3層結(jié)構(gòu)來開發(fā),controller,service和dao

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)遂昌免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

那么為什么事物要存在于業(yè)務(wù)層中,事物是通過connection對象操作的,使用原始jdbc鏈接數(shù)據(jù)庫的鏈接也是connection操作的,connection是在到是怎么傳遞到dao的呢?

這里講解兩種方式
第一種通過形式參數(shù)的方式
在javaee的三層結(jié)構(gòu)中,為什么事物存在于業(yè)務(wù)層
第二種通過ThreadLocal的方式
ThreadLocal的底層是個map,該map的key是固定的,當(dāng)前線程。value可以讓我們存入任意對象

在javaee的三層結(jié)構(gòu)中,為什么事物存在于業(yè)務(wù)層

public class JdbcUtils {

    // 成員變量,創(chuàng)建了C3P0的連接池(連接池中已經(jīng)存在連接了...)
    private static final ComboPooledDataSource DATASOURCE = new ComboPooledDataSource();

    // 把Connection綁定到當(dāng)前的線程中
    private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();

    /**
     * 返回的是C3P0的連接池
     * @return
     */
    public static DataSource getDataSource(){
        return DATASOURCE;
    }

    /**
     * 獲取連接,返回連接
     * @return
     * @throws SQLException 
     */
    public static Connection getConnection() throws SQLException{
        Connection conn = null;
        // 從tl中獲取
        conn = tl.get();
        if(conn == null){
            // 從連接池中獲取連接
            conn = DATASOURCE.getConnection();
            // 非常關(guān)鍵,把連接存入到tl中
            tl.set(conn);
        }
        return conn;
    }

    /**
     * 開啟事務(wù)
     * @throws SQLException 
     */
    public static void beginTransaction() throws SQLException{
        // 調(diào)用getConnection()
        Connection conn = getConnection();
        conn.setAutoCommit(false);
    }

    /**
     * 提交事務(wù)
     * @throws SQLException 
     */
    public static void commitTransaction() throws SQLException{
        // 調(diào)用getConnection()
        Connection conn = getConnection();
        conn.commit();
    }

    /**
     * 回滾事務(wù)
     * @throws SQLException 
     */
    public static void rollBackTransaction() throws SQLException{
        // 調(diào)用getConnection()
        Connection conn = getConnection();
        conn.rollback();
    }

    /**
     * 歸還連接
     * @throws SQLException 
     */
    public static void closeConn() throws SQLException{
        // 調(diào)用getConnection()
        Connection conn = getConnection();
        conn.close();
        tl.remove();
    }

    /**
     * 釋放資源
     * @param stmt
     * @param conn
     */
    public static void release(Statement stmt,Connection conn){
        if(stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn != null){
            try {
                // 已經(jīng)變成了歸還了...
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 釋放資源
     * @param stmt
     * @param conn
     */
    public static void release(ResultSet rs,Statement stmt,Connection conn){
        if(rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn != null){
            try {
                // 把close()給修改了,原來是銷毀連接,現(xiàn)在讓方法變成歸還連接。
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

標(biāo)題名稱:在javaee的三層結(jié)構(gòu)中,為什么事物存在于業(yè)務(wù)層
URL地址:http://aaarwkj.com/article8/pjsoop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)自適應(yīng)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)小程序開發(fā)、企業(yè)網(wǎng)站制作、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營
青青草手机在线视频免费观看| 日本在线精品在线观看| 99精品国产高清一区二区三区 | 日韩av天堂免费网站| 伊人狼人综合视频在线播放| 国产精品自拍av一区二区| 国产青青草成人在线视频| 欧美二区三区精品在线| 老熟妇奂伦一区二区三区| 婷婷中文字幕在线视频| 亚洲另类偷拍校园伦理| 亚洲精品麻豆一区二区| 国产精品国产三级国产普通话99| 亚洲人成免费在线观看| 日本国内一区二区三区四区视频 | 人妻有码系列中文字幕专区| avav男人天堂亚洲天堂| 精品一区二区久久久久久网精| 风间由美亚洲一区二区三区| 浮力草草日韩欧美三级| 国产精品毛片一区内射| 欧美一区二区大香蕉视频| 欧美日韩精品视频专区| 一区二区三区毛片观看| 国产三级系列在线观看| 日本黄色录像在线观看| 粉嫩国产av一区二区三区| 亚洲一区在线观看蜜臀| 片子免费毛片日韩不卡一区| 99久久精品人妻少妇一| 色噜噜噜欧美人妻色综合| 日本高清免费播放一区二区| 国产精品久久综合网| 神马久久午夜免费福利| 日韩高清伦理一区二区| 亚洲中文字幕精品视频乱码| 门国产av一区二区三区| 亚洲综合美女极品啪啪啪| 夫妻性生活短是什么原因| 亚洲久久精品一区二区| 亚洲精品色婷婷一区二区|