JAVA高級編程(數據源datasource)


數據源:通過jdbc連接數據庫,多建立幾條連接放在數據源里面。可以設置數據源的最大連接數,同時活躍的連接數,最少空閑的連接數,能夠同時接收處理的連接數等等。

dbcp數據源

需要的jar包:

  1. commons-dbcp.jar;
  2. commons-pool.jar
  3. mysql-connector-java.jar

前兩個jar包到阿帕奇官網下載。第三個jar包到mysql官網下載。

他是對jdbc的封裝。底層還是要通過jdbc連接數據庫的。實現了java.sql.DataSource接口的類有BasicDataSourceFactory和BasicDataSource。

這兩個類是啟動database的。

image

image

其中BasicDataSourceFactory底層實際上是先創建了BasicDataSource的對象,然后給BasicDataSource對象

 

進行分鍾相關屬性的賦值。比如username,password,url,driverClassName等等。BasicDataSource則是直接通過set方法對這些屬性直接賦值。

通過getConnection方法獲取數據庫連接(Connection接口)。之后的操作就和jdbc一樣了。

C3P0數據源

需要的jar包

c3p0-0.9.5.2.jar

mchange-commons-java-0.2.11.jar

mysql-connector-java-5.1.40-bin.jar

這些資源網上很多一找一大片。

這個類(ComboPooledDataSource)是啟動datadase數據源的

(一)ComboPooledDataSource source = new ComboPooledDataSource();

     source.setDriverClass("com.mysql.jdbc.Driver");
        source.setUser("root");
        source.setPassword("1213265442");
        source.setJdbcUrl("jdbc:mysql://localhost:3306/user");通過set方法即可設置數據池的相關參數(最大連接數,同時活躍的連接數,最少空閑的連接數,能夠同時接收處理的連接數等等)

(二)ComboPooledDataSource source = new ComboPooledDataSource("intergalactoApp");

編寫c3p0-config.xml文件放在src目錄下面。內容如下(注意加黑的部分)

<c3p0-config>
  <!-- This app is massive! -->
  <named-config name="intergalactoApp">
    <property name="acquireIncrement">50</property>       <!--連接池在無空閑連接可用時一次性創建的新數據庫連接數 -->
    <property name="initialPoolSize">100</property>           <!--連接池初始化時創建的連接數-->
    <property name="minPoolSize">50</property>               <!--連接池最少保持的可用連接數->
    <property name="maxPoolSize">1000</property>           <!--連接池最多保持的可用連接數->

      <property name="user">root</property>
      <property name="password">1213265442</property>
      <property name="driverClassName">com.mysql.jdbc.Driver</property>
      <property name="jdbcUrl">jdbc:mysql://localhost:3306/user</property>
  </named-config>
</c3p0-config>通過source.getConnection()的方法就可以得到Connection接口對象。剩下的就是jdbc的操作了。

通過hibernate和datasource連接

我使用的是hibernate4.3當前穩定的最高版本。查看project/etc/hibernate.proterties文件,這個文件是hibernate所有的的配置了。

查看可知

hibernate支持C3P0ConnectionProvider,ProxoolConnectionProvider,DatasourceConnectionProvider,DriverManagerConnectionProvider這四種jdbc連接池

並不包括dbcp,但是支持c3p0。下面我們來給hibernate配置C3P0.

需要的jar包

c3p0-0.9.2.2.jar

mchange-commons-java-0.2.11.jar

mysql-connector-java-5.1.40-bin.jar

hibernate-c3p0-4.3.5.Final

還有一些hibernate的必須包,在required文件夾下面。

hibernate.cfg.xml配置文件中加入

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>    
這就代表了不使用hibernate自己的連接池,而是使用我們自己的C3P0連接池   


使用hibernate和c3p0做數據庫的數據源前面都要加上“hibernate.c3p0”

<property name="hibernate.c3p0.idle_test_period">3000</property>

有關於jdcb的連接還是按照hibernate的jdbc連接。而有關c3p0數據源的屬性配置比如啟動多少個connection連接,屬性前面都要加上“hibernate.c3p0”就像這樣

其他的就跟正常的hibernate配置一樣了。其實我們就是把hibernate自帶的數據池換成了我們自己的。其他都一樣。


          

 


免責聲明!

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



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