<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Hibernate C3P0 連接池配置教程 > 原文: [https://howtodoinjava.com/hibernate/hibernate-c3p0-connection-pool-configuration-tutorial/](https://howtodoinjava.com/hibernate/hibernate-c3p0-connection-pool-configuration-tutorial/) 默認情況下,Hibernate 使用 JDBC 連接以便與數據庫進行交互。 創建這些連接非常昂貴 - Hibernate 在典型的使用情況下可能會執行最昂貴的單個操作。 由于 JDBC 連接管理非常昂貴,因此您可能會建議您使用連接池,它可以提前打開連接(并僅在需要時關閉它們,而不是“不再使用時”)。 幸運的是,默認情況下,Hibernate 設計為使用連接池(內部實現)。 但是,Hibernate 的內置連接池并非設計用于生產用途。 在生產中,將通過使用 JNDI 提供的數據庫連接或通過參數和類路徑配置的外部連接池來使用外部連接池。 [**C3P0**](http://www.mchange.com/projects/c3p0/ "c3p0") 是外部連接池的示例。 在本教程中,我們將學習如何將其與 hibernate 一起使用。 ```java Table of Contents 1) Maven dependencies 2) Configure C3P0 Connection Pool with Hibernate 3) Test connection pooling in runtime ``` ## 1)Maven 依賴 要使用 Hiberate 配置 c3p0,我們需要在`pom.xml`中添加 c3p0 和 Hibernate 的 c3p0 連接供應器作為依賴項。 請注意,`hibernate-c3p0`依賴項的版本應與 Hibernate 的兼容版本匹配。 以下配置使用了最新版本的 hibernate 和 c3p0。 ```java <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-c3p0</artifactId> <version>4.3.6.Final</version> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> ``` ## 2)使用 Hiberate 配置 C3P0 連接池 最好的部分是,使用 Hiberate 配置 C3P0 確實非常容易。 **只需在`hibernate.cfg.xml`文件**中添加任何 c3p0 屬性即可。 例如在`hibernate.cfg.xml`中添加以下條目。 ```java <property name="hibernate.c3p0.min_size">10</property> ``` 恭喜!! 現在,使用您的應用的 Hiberate 層配置了 C3P0 的連接池。 您很好地開始測試這些東西。 真的很簡單,不是嗎? 可以使用`hibernate.cfg.xml`中的以下屬性來設置相當詳細的配置。 ```java <property name="hibernate.c3p0.min_size">10</property> <property name="hibernate.c3p0.max_size">20</property> <property name="hibernate.c3p0.acquire_increment">1</property> <property name="hibernate.c3p0.idle_test_period">3000</property> <property name="hibernate.c3p0.max_statements">50</property> <property name="hibernate.c3p0.timeout">1800</property> ``` 您可以在[**官方文檔**](http://www.mchange.com/projects/c3p0/#configuration "configuration")中找到有關上述配置開關的詳細信息。 ## 3)在運行時測試連接池 #### 不帶 C3P0 連接池配置 在未配置 C3P0 的情況下,如果您看到 Hiberate 的調試日志,則會看到以下內容: ```java DEBUG Configuration:1841 - Preparing to build session factory with filters : {} WARN DriverManagerConnectionProviderImpl:93 - HHH000402: Using Hibernate built-in connection pool (not for production use!) INFO DriverManagerConnectionProviderImpl:166 - HHH000401: using driver [org.hsqldb.jdbcDriver] at URL [jdbc:hsqldb:mem:howtodoinjava] INFO DriverManagerConnectionProviderImpl:172 - HHH000046: Connection properties: {user=sa, password=} INFO DriverManagerConnectionProviderImpl:180 - HHH000006: Autocommit mode: false INFO DriverManagerConnectionProviderImpl:102 - HHH000115: Hibernate connection pool size: 20 (min=1) DEBUG DriverManagerConnectionProviderImpl:104 - Initializing Connection pool with 1 Connections ... ... ... EBUG JdbcTransaction:113 - committed JDBC Connection DEBUG SessionFactoryImpl:1339 - HHH000031: Closing DEBUG AbstractServiceRegistryImpl:406 - Implicitly destroying ServiceRegistry on de-registration of all child ServiceRegistries INFO DriverManagerConnectionProviderImpl:281 - HHH000030: Cleaning up connection pool [jdbc:hsqldb:mem:howtodoinjava] ``` #### 使用 C3P0 連接池配置 配置 C3P0 連接池后,您將在日志中看到現在已從 C3P0 連接池本身獲取連接。 ```java DEBUG Configuration:1841 - Preparing to build session factory with filters : {} INFO C3P0ConnectionProvider:133 - HHH010002: C3P0 using driver: org.hsqldb.jdbcDriver at URL: jdbc:hsqldb:mem:howtodoinjava INFO C3P0ConnectionProvider:134 - HHH000046: Connection properties: {user=sa, password=****} INFO C3P0ConnectionProvider:137 - HHH000006: Autocommit mode: false INFO MLog:92 - MLog clients using log4j logging. INFO C3P0Registry:216 - Initializing c3p0-0.9.2.1 [built 20-March-2013 10:47:27 +0000; debug? true; trace: 10] DEBUG DynamicPooledDataSourceManagerMBean:258 - MBean: com.mchange.v2.c3p0:type=PooledDataSource,identityToken=19tu9of94ho8s13xij3fm|34e475e1,name=19tu9of94ho8s13xij3fm|34e475e1 registered. DEBUG DynamicPooledDataSourceManagerMBean:253 - MBean: com.mchange.v2.c3p0:type=PooledDataSource,identityToken=19tu9of94ho8s13xij3fm|34e475e1,name=19tu9of94ho8s13xij3fm|34e475e1 unregistered, in order to be reregistered after update. DEBUG DynamicPooledDataSourceManagerMBean:258 - MBean: com.mchange.v2.c3p0:type=PooledDataSource,identityToken=19tu9of94ho8s13xij3fm|34e475e1,name=19tu9of94ho8s13xij3fm|34e475e1 registered. INFO AbstractPoolBackedDataSource:522 - Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@d29bbf50 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@a9bbd924 [ ... ] ... ... ... DEBUG ActiveManagementCoordinator:97 - C3P0Registry mbean unregistered. DEBUG BasicResourcePool:1022 - Preparing to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@1d1fcfbb DEBUG C3P0PooledConnectionPool:616 - Preparing to destroy PooledConnection: com.mchange.v2.c3p0.impl.NewPooledConnection@1d1fcfbb DEBUG AbstractPoolBackedDataSource:477 - com.mchange.v2.c3p0.PoolBackedDataSource@34e475e1 has been closed. java.lang.Exception: DEBUG STACK TRACE for PoolBackedDataSource.close(). at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.close(AbstractPoolBackedDataSource.java:477) at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.close(AbstractPoolBackedDataSource.java:489) at com.mchange.v2.c3p0.DataSources.destroy(DataSources.java:372) at com.mchange.v2.c3p0.DataSources.destroy(DataSources.java:348) at org.hibernate.c3p0.internal.C3P0ConnectionProvider.stop(C3P0ConnectionProvider.java:258) at org.hibernate.service.internal.AbstractServiceRegistryImpl.stopService(AbstractServiceRegistryImpl.java:377) at org.hibernate.service.internal.AbstractServiceRegistryImpl.destroy(AbstractServiceRegistryImpl.java:361) at org.hibernate.service.internal.AbstractServiceRegistryImpl.deRegisterChild(AbstractServiceRegistryImpl.java:410) at org.hibernate.service.internal.AbstractServiceRegistryImpl.destroy(AbstractServiceRegistryImpl.java:368) at org.hibernate.internal.SessionFactoryImpl.close(SessionFactoryImpl.java:1377) at com.howtodoinjava.demo.util.HibernateUtil.shutdown(HibernateUtil.java:39) at com.howtodoinjava.test.TestHibernate.main(TestHibernate.java:22) ``` 這就是這個簡單而有用的教程,有關如何使用 Hiberate 配置 C3P0 連接池。 **祝您學習愉快!** **參考**:[http://www.mchange.com/projects/c3p0/#configuration](http://www.mchange.com/projects/c3p0/#configuration "c3p0 configuration")
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看