java - 如何使 jdbc mysql 数据库连接生效

标签 java mysql spring hibernate jdbc

下面是我的 hibernate.xml 文件,对于 sql 中的任何查询,我将使用 session 工厂进行查询,但在此我使用属性名称 dataSource,其中它引用数据库连接,因此对于我调用的每个查询 session 工厂,并且对于每次调用,它都会调用 dataSource 并建立一个新连接,而不是我只想建立一个连接并对每个请求进行多个查询是否可能

我正在使用 hibernate 进行 sql 查询

我正在使用下面的 hibernate.xml,正如我从 http://www.mkyong.com/spring/maven-spring-hibernate-mysql-example/ 学到的那样

hibernate.xml:

<property name="dataSource">
  <ref bean="dataSource"/>
</property>

<property name="hibernateProperties">
   <props>
     <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
     <prop key="hibernate.show_sql">true</prop>
   </props>
 </property>

 <property name="mappingResources">
<list>
       <value>resources/database/Token.xml</value>
</list>
  </property>   

</bean>

数据源.xml:

<bean id="dataSource" 
         class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
   <property name="url" value="jdbc:mysql://localhost:3306/get"/>
   <property name="username" value="root"/>
   <property name="password" value="password"/>
  <property name="initialSize" value="3"/>
   <property name="minPoolSize" value="1" />
<property name="maxPoolSize" value="3" />
</bean>

</beans>

更新:我已经创建了代码连接池,但如何使其在应用程序启动时仅打开一个连接,并为每个请求使用相同的连接

正如您所看到的,每次调用 session 工厂时它都会调用 dataSource 并建立一个连接,我想停止它

最佳答案

两个考虑因素。 首先,您可以在一个 xml 文件中配置所有 bean,不需要为 hibernate 和 spring 保留不同的文件(Spring 就足够了)。

第二:您可以使用支持池连接和更多配置的数据源,例如 C3P0 。 如何声明它的示例是:

<bean id="yourDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="com.mysql.jdbc.Driver" />
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/get" />
    <property name="user" value="username" />
    <property name="password" value="password" />
    <property name="minPoolSize" value="1" />
    <property name="maxPoolSize" value="3" />
    <property name="preferredTestQuery">
      <value>select null from dual</value>
    </property>
    <property name="testConnectionOnCheckin">
      <value>true</value>
    </property>
    <property name="idleConnectionTestPeriod">
      <value>1000</value>
    </property>
  </bean>

关于java - 如何使 jdbc mysql 数据库连接生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32610224/

相关文章:

php - 想要合并两个 sql 查询以获得共同的结果

mysql - MySQL如何有效地返回跨3个表相关的结果

java - spring- uuid 作为主键无法更新

java - 未显示字符串列表

java - 正则表达式,如何识别由空格分隔的 2 或 3 个单词(任何非空格)

java - Oracle 僵尸连接与 Tomcat 9

php - mysql select query for multiple ID's that call name 来自同一个用户名表

java - 向 Swagger UI 添加基本身份验证

java - 采集API的选择

java - 扩展 Spring Integration Web 应用程序