下面是我的 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/