添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

spring + hibernate 数据库连接池

为什么还要用连接池的原因也知道了

接下里我还是将简单的demo跑起来------------->这次用的是c3p0连接池

主要用的是spring+HibernateTemplate

整合思路是,使DAO继承HibernateTemplate这个类

HibernateTemplate这个类提供了setSessionFactory()方法用于注入SessionFactory

通过spring获取DAO的时候,注入SessionFactory.

准备相关的jar包






接下来创建一个项目



创建一个category的实体类



创建查询的XML的字段的配置---->还要表的配置



接下来就是c3p0的配置

创建dao的时候,会注入sessionfactory

创建sessionFactory的时候会注入数据源ds

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=" springframework.org/sch "

xmlns:xsi=" w3.org/2001/XMLSchema-i "

xmlns:aop=" springframework.org/sch "

xmlns:tx=" springframework.org/sch "

xmlns:context=" springframework.org/sch "

xsi:schemaLocation="

springframework.org/sch

springframework.org/sch

springframework.org/sch

springframework.org/sch

springframework.org/sch

springframework.org/sch

springframework.org/sch

springframework.org/sch ">

<bean name="c" class="com.fuwei.pojo.Category">

<property name="username" value="yyy" />

</bean>

<bean name="dao" class="com.fuwei.dao.CategoryDAO">

<property name="sessionFactory" ref="sf" />

</bean>


<bean name="sf"

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

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

<property name="mappingResources">

<list>

<value>com/fuwei/pojo/Category.hbm.xml</value>

</list>

</property>

<property name="hibernateProperties">

<value>

hibernate.dialect=org.hibernate.dialect.MySQLDialect

hibernate.show_sql=true

hbm2ddl.auto=update

</value>

</property>

</bean>

<bean name="ds"

class="com.mchange.v2.c3p0.ComboPooledDataSource">

<property name="driverClass" value="com.mysql.jdbc.Driver" />

<property name="jdbcUrl"

value="jdbc:mysql://localhost:3306/student?characterEncoding=UTF-8" />

<property name="user" value="root" />

<property name="password" value="666666" />

<!--连接池中保留的最小连接数。-->

<property name="minPoolSize" value="10" />

<!--连接池中保留的最大连接数。Default: 15 -->

<property name="maxPoolSize" value="100" />

<!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->

<property name="maxIdleTime" value="1800" />

<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->

<property name="acquireIncrement" value="3" />

<!--最大的Statements条数 -->

<property name="maxStatements" value="1000" />

<!--初始化10条连接 -->

<property name="initialPoolSize" value="10" />

<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->

<property name="acquireRetryAttempts" value="30" />

<!--每隔60秒发一次心跳信号到数据库,以保持连接的活性 -->

<property name="idleConnectionTestPeriod" value="60" />

</bean>


这个和普通不用C3p0连接池的细微的差别

调整applicationContext.xml以使得其支持c3p0数据库连接池

主要是修改数据源database

1. database class

从 org.springframework.jdbc.datasource.DriverManagerDataSource

改为 com.mchange.v2.c3p0.ComboPooledDataSource

2. driverClassName 改为 driverClass

3. url 改为 jdbcUrl

4. username 改为 user

5. 增加c3p0相关配置




DAO继承HibernateTemplete,而HibernateTemplete类里有一个setSessionFactory用于接收sessionFactory的注入



最后就是查询类的配置

因为CategoryDAO 继承了HibernateTemplate,所以可以直接使用

find来查询所有的Category



最后的查询数据库的数据



这个spring + hibernate 的XML的配置和mybatis的我感觉差不多,有好多类似的地方

我就类比这学习,今天就只是简单的让demo跑起来---->可以查询到数据库的数据,展示到控制台里面---->明天看看其他的相关的hibernate的操作


今天完成:了解和开始连接池(是不是都要了解其他连接池--->还是只是先暂时了解c3p0)

具体的怎么用----<会面其他的基本是类似的


明天的计划:了解其他的查询的怎么操作---->还有怎么分页(看完成的怎么样--->我还是想具体的了解一下 虽然和mybatis差不多的,但是还是有不同--->我明天对你一下....>>>做个分析对比)


今天遇到的困难:就是那个开始的查询语句不是很理解



后面具体看了那个配置文件,知道做个是怎么查询的----->就不像我们以前的select的那些语句


今天的收获: 就是简单的spring + hibernate 的demo跑起来--->可以实现查询的功能---->那个好多都XML的配置简化了----->感觉还不错---->现在那个数据库连接池的好处还没有体现出来---->后面可能会接触到


加油坚持---->

发布于 2017-12-23 23:29

文章被以下专栏收录