Spring系列 之數據源的配置 數據庫 數據源 連接池的區別


Spring系列之數據源的配置

數據源,連接池,數據庫三者的區別

連接池:這個應該都學習過,比如c3p0,druid等等,連接池的作用是為了提高程序的效率,因為頻繁的去創建,關閉數據庫連接,會對性能有很大的消耗,所以就有了連接池,連接池顧名思義是存儲多個連接的池子,池子中的連接都是創建好的,我們只要拿來使用即可,不用的時候就歸還給連接池,這就大大減少了關閉創建連接的時間,提高了效率
數據庫:存儲數據的地方
數據源:數據源顧名思義是數據的來源,存儲了連接數據庫所需要的信息,也可以說是用於管理數據庫連接池,並不存儲真正的數據,僅僅記錄了連接哪個數據庫,怎么連接。如果把數據庫比作一個文件的話,那么數據源存儲的就是文件的名稱,可以通過文件名稱來找到對應的文件,算是一個抽象的映射,一個數據庫對應一個數據源,數據源可能是一個連接,也可能是一個連接池
如果你是玫瑰,他就是牛糞

在這里插入圖片描述

呸呸呸,說錯了
如果數據是水,數據庫就是水庫,數據源就是管道,終端用戶看到的數據集是管道里流出來的水。

在這里插入圖片描述
Spring功能這么強大,怎么可能少的了數據源呢

Spring配置數據源

配置步驟
1.導入數據源的坐標與數據庫驅動坐標
2.創建數據源對象
3.設置數據源的基本連接信息
4.使用數據源獲取連接或歸還連接
需要導入的坐標信息
junit

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>

druid

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.9</version>
</dependency>

c3p0

<dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.1.2</version>
</dependency>

spring—context

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.3.RELEASE</version>
</dependency>

mysql

  <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.32</version>
    </dependency>

我先手動配置一波,等一下再用Spring容器經行配置,大家就能看到二者的巨大差別了
手動配置數據源

druid

 public void main() throws Exception{
        //創建數據源
        DruidDataSource druidDataSource = new DruidDataSource();
        //設置連接參數
        druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
        druidDataSource.setUrl("jdbc:mysql://localhost:3309/one");
        druidDataSource.setUsername("root");
        druidDataSource.setPassword("1234");
        //獲取連接對象
        DruidPooledConnection connection = druidDataSource.getConnection();
        System.out.println(connection);
    }

c3p0

 public void test2() throws Exception{
        //創建數據源
        ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
        //設置連接參數
        comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
        comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3309/one");
        comboPooledDataSource.setUser("root");
        comboPooledDataSource.setPassword("1234");
        //獲取連接對象
       comboPooledDataSource.getConnection();
        System.out.println(comboPooledDataSource);
    }

為了降低耦合性之前我們是通過讀取配置文件的方法,這里我給大家重新復習一下

首先抽取要配置的信息到配置文件
右端的字符串注意不要加雙引號,否則會報錯,因為他默認就是字符串

jdbc.Driver=com.mysql.jdbc.Driver
jdbc.Url=jdbc:mysql://localhost:3309/one
jdbc.Username=root
jdbc.Password=1234

再讀取配置文件來創建連接池

public void test3() throws  Exception{
//加載路徑下的properties
        ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
        //創建數據源
        ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
        //設置連接參數
        comboPooledDataSource.setDriverClass(bundle.getString("jdbc.Driver"));
        comboPooledDataSource.setJdbcUrl(bundle.getString("jdbc.Url"));
        comboPooledDataSource.setUser(bundle.getString("jdbc.Username"));
        comboPooledDataSource.setPassword(bundle.getString("jdbc.Password"));
        //獲取連接對象
        comboPooledDataSource.getConnection();
        System.out.println(comboPooledDataSource);
    }

這樣的方式很好的降低了耦合性

重點來了,下面我們來講講如何使用Spring來配置數據源

在這里插入圖片描述

Spring配置數據源

將DataSource的創建權交給Spring容器去完成
DataSource有無參構造方法,Spring默認就是通過無參構造方法實例化對象
DataSource要想使用需要通過set方法設置數據庫連接信息,Spring可以通過set方法進行注入

在Spring容器中配置Bean

 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3309/one"/>
        <property name="user" value="root"/>
        <property name="password" value="1234"/>
    </bean>

到容器中獲取資源

public void two() throws SQLException {
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new       ClassPathXmlApplicationContext("applicationcontext.xml");
        DataSource datasource = (DataSource)classPathXmlApplicationContext.getBean("datasource");
        Connection connection = datasource.getConnection();
        System.out.println(connection);

    }

上面的方法是不是還不夠方便,我們可以用更方便的,即讀取配置文件的方法
我們首先引入命名空間與約束路徑

命名空間:xmlns:context="http://www.springframework.org/schema/context"
約束路徑:http://www.springframework.org/schema/context                       
http://www.springframework.org/schema/context/spring-context.xsd

容器加載配置文件

<context:property-placeholder location="classpath:jdbc.properties"/>

配置Bean

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

以上就是Spring配置源的一些知識,有志同道合的伙伴可以關注我或者私信我加好友一同學習章,共勉


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM