还在用DriverManager获取数据库连接?快用DataSource吧

图片来自网络

一、开头牢骚
DriverManager是我从接触jdbc以来,一直使用的获取数据库连接的类,相当好用。
但是,在学习DataSource之前,我并没有意识到使用DriverManager会给系统带来负担和资源浪费。
因为我并没有意识到,使用DriverManager类来获取的Connection连接,是无法重复利用的。要想重复利用,必须重新创建连接。
而创建连接,又很耗费时间和资源!
所以我喜新厌旧了。
我告诉自己要开始另一段生活,要好好学习、天天向上,要上得厅堂、下得厨房,要当四有青年。
我找到了DataSource!

二、知识点讲解
1.何为数据源?
百度的答案:数据源是指数据库应用程序所使用的数据库或者数据库服务器
我的理解:数据源就是我们在MySQL中创建的每一个数据库,比如你创建了一个bbs的数据库,那么数据源就是这个bbs.

2.何为数据库连接池?
我的理解:就是一个专门用来存放和管理数据库连接对象的东西。

3.为什么要有数据库连接池?
用户每一次请求都要跟数据库建立连接,而数据库创建连接需要消耗相当大的资源,如果有十万个用户,意味着要建立十万个连接,这样子消耗数据库资源太大,也很容易出现错误。而利用连接池我们能够对连接进行管理,在数据库连接池中,有一定数量的数据库连接对象。用户每一次请求连接,都要从数据库连接池中请求,这样子的话,一个连接对象就可以被多次使用。就能够极大的提高数据库资源的利用率。
具体的对比图如下:


图片来自网络,有部分修改

4.DataSource对象代表了什么?
DataSource对象代表了一个数据源,通过DataSource对象,我们可以获取数据库连接。

三、Tomcat7中获取DataSource对象
1.在Tomcat7的conf/server.xml下的<GlobalNamingResources>节点里配置resource

//其中name="jdbc/bbs"可以随意取
//maxActive是连接池中最大激活连接数
<Resource name="jdbc/bbs"
      auth="Container"
      type="javax.sql.DataSource"
      factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
      testWhileIdle="true"
      testOnBorrow="true"
      testOnReturn="false"
      validationInterval="30000"
      timeBetweenEvictionRunsMillis="30000"
      maxActive="30"
      minIdle="5"
      maxWait="10000"
      initialSize="10"
      removeAbandonedTimeout="60"
      removeAbandoned="true"
      logAbandoned="true"
      minEvictableIdleTimeMillis="30000"
      jmxEnabled="true"
      jdbcInterceptors=
"org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
      username="root"
      password="123"
      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://localhost:3306/bbs"/>

2.在context.xml文件的<Context></Context>节点中添加如下配置:
···
<ResourceLink global="jdbc/bbs" name="jdbc/bbs" type="javax.sql.DataSource"/>
···

3.具体的Java代码

public class DBUtil {
    public static Connection getConn() throws Exception{
        Connection conn = null;
        DataSource ds = null;
        Context ctx = new InitialContext();
        //java:comp/env是固定的,所有的数据库都一样       
        Context ctx1 = (Context)ctx.lookup("java:comp/env");
        Context ctx2 = (Context)ctx1.lookup("jdbc");
        ds = (DataSource)ctx2.lookup("bbs");
        
        if(ds != null){
            conn = ds.getConnection();  
        }
        return conn;
    }
    
    public static void closeConn(Connection conn, PreparedStatement ps, ResultSet rs){
        
            try {
                if(conn != null){
                    conn.close();
                }
                if(rs != null){
                    rs.close();
                }
                if(ps != null){
                    ps.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }
}

不知道小鱼有没有讲清楚,如果觉得小鱼的文章还不错的话,各位客官看完之后千万不要忘记点赞和评论哦!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容