Cha*_*han 2 java connection-pooling oracle11g
我们正在开发Java SE应用程序,而我正在使用Hibernate与数据库进行通信。我的数据库是Oracle 11g Express Edition。到目前为止,我尚未在应用程序中使用连接池。但是我以前使用过c3p0连接池,但是我从未真正了解过它。
在Java SE应用程序中使用c3p0的优缺点是什么?我了解Java EE应用程序有用,但是Java SE吗?
这是我的休眠配置。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:XE</property>
<property name="hibernate.connection.username">EP</property>
<property name="hibernate.connection.password">123</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.default_schema">EP</property>
<property name="show_sql">true</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<mapping class="app.model.User"></mapping>
</session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)
我了解Java EE应用程序有用,但是Java SE吗?
在Java SE中使用连接池的原因从根本上与 Java EE情况相同。打开和关闭JDBC连接的成本相对较高,并且连接池使您可以重用应用程序先前打开的连接。
(显然,如果Java SE应用程序只需要使用一个(或少量)JDBC连接,则使用连接池不会带来任何收益。但是对于具有相同特征的Java EE应用程序也是如此。 )
是的,但是Java SE应用程序是否必须一次具有多个连接?
1)这完全取决于应用程序及其功能。
2)对于需要串行多个连接的应用程序,连接池也很有用……但是一次只需要一个连接。例如,如果正在第三方库中创建和关闭连接。