当前位置: 首页 > 面试题库 >

使用Spring在Hibernate中配置内置的c3p0池

魏健柏
2023-03-14
问题内容

我了解到要在hibernate中配置c3p0池,我们可以在hibernate.cfg.xml中编写如下配置:

<property name="hibernate.c3p0.min_size">2</property>
    <property name="hibernate.c3p0.max_size">5</property>
    <property name="hibernate.c3p0.timeout">600</property>
    <property name="hibernate.c3p0.max_statements">0</property>
    <property name="hibernate.c3p0.idle_test_period">300</property>
    <property name="hibernate.c3p0.acquire_increment">1</property>

但是我使用Spring配置了Hibernate。当我尝试执行以下操作时,它将无法正常工作:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost/news_loader" />
    <property name="username" value="blah" />
    <property name="password" value="blah" />

    <property name="hibernate.c3p0.min_size" value="2" />
    <property name="hibernate.c3p0.max_size" value="5" />
    <property name="hibernate.c3p0.timeout" value="600" />
    <property name="hibernate.c3p0.max_statements" value="0" />
    <property name="hibernate.c3p0.idle_test_period" value="300"/>
    <property name="hibernate.c3p0.acquire_increment" value="1" />
</bean>

我已经阅读了有关使用独立c3p0池的信息,该池可以使用Spring进行配置,但是有什么方法可以使用Spring在Hibernate中配置内置c3p0池呢?

启发我,因为我是初学者。


问题答案:

这是有关如何在数据源中配置c3p0的示例配置(来自我们的应用程序):

<bean id="dataSourceGlobal" class="com.mchange.v2.c3p0.ComboPooledDataSource"
          destroy-method="close">
        <property name="driverClass" value="${driver}" />
        <property name="jdbcUrl" value="${server}" />
        <property name="user" value="${user}" />
        <property name="password" value="${passw}" />

        <!-- these are C3P0 properties -->
        <property name="acquireIncrement" value="${acquireIncrement}" />
        <property name="minPoolSize" value="${minPoolSize}" />
        <property name="maxPoolSize" value="${maxPoolSize}" />
        <property name="maxIdleTime" value="${maxIdleTime}" />
</bean>

我们使用外部属性文件来配置一些参数,但是也可以直接在Spring中配置它们。

如果您希望hibernate处理池,则需要配置会话属性:

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
    <!--suppress InjectionValueTypeInspection -->
    <property name="mappingResources" ref="hibernateMappingList" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">net.sf.hibernate.dialect.Oracle9Dialect</prop>
            <prop key="transaction.factory_class">
                net.sf.hibernate.transaction.JDBCTransactionFactory
            </prop>
            <prop key="hibernate.transaction.factory_class">
                net.sf.hibernate.transaction.JDBCTransactionFactory
            </prop>
            <prop key="hibernate.show_sql">false</prop>
            <prop key="hibernate.cglib.use_reflection_optimizer">false</prop>
            <prop key="hibernate.jdbc.batch_size">0</prop>

            <prop name="hibernate.c3p0.min_size" value="2" />
            <prop name="hibernate.c3p0.max_size" value="5" />
            <prop name="hibernate.c3p0.timeout" value="600" />
            <prop name="hibernate.c3p0.max_statements" value="0" />
            <prop name="hibernate.c3p0.idle_test_perhtml" target="_blank">iod" value="300"/>
            <prop name="hibernate.c3p0.acquire_increment" value="1" />
      </props>
    </property>
</bean>

您必须使用以下方法之一:在数据源中池或在hibernate会话中池。切勿同时使用两者,因为这会浪费资源。



 类似资料:
  • 问题内容: 我有一个使用Hibernate作为JPA提供程序的Spring / JPA应用程序。我已经通过以下方式在Spring中配置了C3P0数据源: 然后,我在Spring实体管理器工厂中指定了此数据源,如下所示: 但是,我最近在浏览Maven工件时注意到“ hibernate-c3p0”。这是什么?这是我需要使用的东西吗?还是我已经正确配置了它? 问题答案: hibernate-c3p0.j

  • 问题内容: 好吧,我正在尝试使用JPA + Hibernate + Spring首次配置C3P0。在persistence.xml中,我有: 但是,当我尝试初始化tomcat时,出现以下错误: 编辑1: 这是我的applicationContext.xml,如何在其中配置C3P0呢? 问题答案: 您的配置有缺陷。您正在应用程序上下文中进行配置。因此,基本上所有属性都是无用的,其次,该属性的设置破坏

  • 除非我真的很沮丧,否则我不会发这个帖子。我试图在一个非常简单的应用程序中用Hibernate 4.1.1配置C3P0,但是我得到了一个类未找到异常。我已经在类路径中包含了C3P0特定的jar文件。Hibernate-c3p0-3.5.2-Final.jar hibernate.properties: Stacktrace:

  • 我需要的几乎和这个问题一样的东西是如何将Hibernate类映射转换为Spring应用程序上下文? 但我不应该使用注释,我需要保存xml映射,那么我应该如何在spring配置中指定映射呢? 另外,很抱歉可能重复,但我只看到基于注释的建议 我当前的配置与注释:hibernate.cfg.xml 应用程序上下文。xml sessionFactory bean:

  • 首先我想写:我知道为Spring Boot配置Hibernate JPA不是一个好主意,怎么说“这很愚蠢”,因为Spring Boot给了你自动配置等。好吧,我知道,但我正在自学Spring和Hibernate,我想一步一步地配置Hibernate,并注入Spring上下文。所以,我的问题是,我配置了Hibernate并将类写到配置中,它使用“persitence.xml”。@Persistenc

  • 问题内容: 我正在尝试使用spring 3.2和hibernate 4 创建bean。为此,我使用了以下代码。但问题是 过时 和建议,而不是使用的javadoc。但是,我无法理解什么是 ServiceRegistry 以及如何使用。 问题答案: 接口与服务的概念有关(对于Hibernate 4是新的)。服务是为Hibernate提供各种功能的类,用户可以为它们插入替代的实现。有关详细信息,请参见此