Hibernate使用连接池

时间:2022-09-20 07:51:47

应用服务器或第三方C3P0的连接池

1.Tomcat中配置如下:

Tomcat/conf/context.xml中

<Context>

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <Resource name="jdbc/hib" auth="Container" type="javax.sql.DataSource"
    maxActive="100" maxIdle="30" maxWait="10000" username="root" password="123456"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/hib"
    />
  </Context>

注意把数据库驱动包放到tomcat的lib下。

使用应用服务器的连接池只能在web应用中使用,本地的junit或main主函数中获取sessionFactory是不行的。

hibernate.cfg.xml

<property name="connection.datasource">java:comp/env/jdbc/hib</property>
2.c3p0

<property name="connection.url">
    jdbc:mysql://localhost:3306/hib
</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.driver_class">
    com.mysql.jdbc.Driver
</property>

<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
    <!-- 每次用完新建连接的数量 -->
    <property name="hibernate.c3p0.acquire_increment">2</property>
    <!-- 检查连接池中空闲连接的时间间隔,以秒为单位 -->
    <property name="c3p0.idle_test_period">120</property>
    <!-- 最大连接数 -->
    <property name="c3p0.max_size">10</property>
    <!-- 最小连接数 -->
    <property name="c3p0.min_size">10</property>
    <!-- 设置连接池中Statement对象的最大数量 -->
    <property name="c3p0.max_statements">50</property>
    <!-- 连接池中连接的最大空闲时间,超时后被删除 -->
    <property name="c3p0.timeout">3600</property>