Hibernate c3p0和Spring。 bean类的属性'driverClassName'无效[org.hibernate.c3p0.internal.C3P0ConnectionProvider]

时间:2016-01-08 01:13:51

标签: spring hibernate spring-mvc c3p0

我目前正在开发一个使用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。

2 个答案:

答案 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的参数 希望有帮助