我们正在开发Java SE应用程序,我正在使用Hibernate与数据库进行通信。我的数据库是Oracle 11g Express Edition。到目前为止,我还没有在应用程序中使用连接池。但我之前使用过c3p0连接池,但我从来没有真正理解它。
在Java SE应用程序中使用c3p0的优点和缺点是什么?我可以理解它对Java EE应用程序有用但是Java SE?
这是我的Hibernate配置。
<?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>
答案 0 :(得分:4)
我可以理解它对Java EE应用程序有用但是Java SE?
在Java SE中使用连接池的原因是与Java EE案例中的基本相同。。打开和关闭JDBC连接相对昂贵,连接池允许您重用应用程序之前打开的连接。
(显然,如果Java SE应用程序只需要使用一个(或少量)JDBC连接,那么使用连接池就没有任何回报。但这同样适用于Java EE应用程序相同的特征。)
是的,但Java SE应用程序是否有必要一次拥有多个连接?
1)这完全取决于应用程序及其功能。
2)连接池对于需要串行连接多个连接的应用程序也很有用......但是一次只能连接一个连接。例如,如果正在第三方库中创建和关闭连接。
答案 1 :(得分:0)
有没有人意识到Java EE应用程序都运行在相同的Java SE JVM和一些插件库上?这就是说,Java EE应用程序需要使其作为Java SE应用程序工作的库,或者换句话说: 所有EE容器都是Java SE应用程序。
在已经注意到连接池与SE或EE无关之前,它更多地基于应用程序应该做的事情。