参读了Hibernate的源代码后,整理了一下Hibernate配置文件中几种实现数据库连接方式的配置方法。(共四个方式)
1. 程序内部启动 c3p0 连接池。
配置方式如下:连接池的支持(注:需要c3p0的类库支持)
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
<property name="hibernate.connection.url" value="jdbc:postgresql://xxxxx/xxxx" />
<property name="hibernate.connection.username" value="xxxxx" />
<property name="hibernate.connection.password" value="xxxx" />
<property name="hibernate.c3p0.min_size"
value="5"/>
<property name="hibernate.c3p0.max_size"
value="20"/>
<property name="hibernate.c3p0.timeout"
value="300"/>
<property name="hibernate.c3p0.max_statements"
value="50"/>
<property name="hibernate.c3p0.idle_test_period"
value="3000"/>
注: Hibernate根据 hibernate.c3p0.max_size 这个配置来识别是支持c3p0连接池
2. 引用外部连接池 (通过JNDI查找 DataSource资料)
需要配置方式如下:
<property name="hibernate.connection.datasource" value="java:comp/env/jdbc/qualitydb"/>
3. 通过 org.hibernate.connection.ProxoolConnectionProvider 创建
由
hibernate.proxool.xml
hibernate.proxool.properties
hibernate.proxool.existing_pool 三个配置一起来确定
4. DriverManager 创建直接连接方式
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
<property name="hibernate.connection.url" value="jdbc:postgresql://xxxxx/xxxx" />
<property name="hibernate.connection.username" value="xxxxx" />
<property name="hibernate.connection.password" value="xxxx" />
注: Hibernate根据 hibernate.connection.url这个来识别,由于在识别时,c3p0的优先级会高于DriverManger所以,与c3p0的配置不会冲突
Good Luck!
Yours Matthew!