我目前正在开发一个使用hibernate和Spring MVC的应用程序。 我想实现c3p0,但我无法理解如何实现它。
我在可选文件夹Hibernate-c3p0-5.0.2.jar
中使用了c3p0 jar
c3p0-0.9.2.1.jar
。
这些是我的配置。
现在,我正在使用Spring的DriverManagerDatasource
。
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
我试过这个
<bean id="dataSource" class="org.hibernate.c3p0.internal.C3P0ConnectionProvider">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- C3P0 Config -->
<property name="hibernate.c3p0.acquire_increment" value="1" />
<property name="hibernate.c3p0.idle_test_period" value="100" />
<property name="hibernate.c3p0.max_size" value="10" />
<property name="hibernate.c3p0.max_statements" value="10" />
<property name="hibernate.c3p0.min_size" value="10" />
<property name="hibernate.c3p0.timeout" value="100" />
</bean>
但我收到了错误。
Invalid property 'driverClassName' of bean class [org.hibernate.c3p0.internal.C3P0ConnectionProvider]
TIA。
答案 0 :(得分:1)
Public Shared Function GetDataSet2(ByVal columnname As String, ByVal databasename As String, ByVal condition As String, ByVal columngroup As String, ByVal columnorder As String) As DataSet
Dim conn As New SqlConnection()
conn = getConn()
Dim ds As New DataSet
Dim query As String
Try
If condition = "" Then
condition = "1 = 1"
End If
query = "SELECT " & columnname & " FROM " & databasename & " WHERE " & condition & " GROUP BY " & columngroup & " ORDER BY " & columnorder &""
Dim sda As New SqlDataAdapter(query, conn)
sda.Fill(ds)
sda.Dispose()
Catch oError As Exception
Throw oError
Finally
If conn.State Then conn.Close()
conn.Dispose()
End Try
Return ds
End Function
是driverClassName
属性,而不是DriverManagerDataSource
上的属性。这就是为什么你会收到错误的原因。
您希望使用C3P0的C3P0ConnectionProvider
实现,而不是使用Spring DriverManagerDataSource
,它只是一个简单的DataSource
实现,而不是连接池。尝试使用DataSource
。该实现还具有ComboPooledDataSource
属性,您希望将其设置为等于数据库驱动程序(如MySQL驱动程序或其他)。
以下是我举起web page的一个例子:
driverClassName
那不是春天,而只是做出调整,把它放在春天。完整的班级名称为 cpds = new ComboPooledDataSource();
cpds.setDriverClass("com.mysql.jdbc.Driver"); //loads the jdbc driver
cpds.setJdbcUrl("jdbc:mysql://localhost/test");
cpds.setUser("root");
cpds.setPassword("root");
。您可以看到基于Spring的示例here。
答案 1 :(得分:0)
我知道这个问题很旧,但是对于新手来说,希望对您有所帮助。 问题出在您的姓名标签上
替换:
<bean id="dataSource" class="org.hibernate.c3p0.internal.C3P0ConnectionProvider">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
使用
<bean id="dataSource" class="org.hibernate.c3p0.internal.C3P0ConnectionProvider">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
...
请注意:使用 driverClass 代替driverClassName,使用 jdbcUrl 代替url,使用 user 代替用户名和 password 就在这里.....这些是ComboPooledDataSource的参数 希望有帮助