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=" http://www. springframework.org/sch ema/beans "
xmlns:xsi=" http://www. w3.org/2001/XMLSchema-i nstance "
xmlns:aop=" http://www. springframework.org/sch ema/aop "
xmlns:tx=" http://www. springframework.org/sch ema/tx "
xmlns:context=" http://www. springframework.org/sch ema/context "
xsi:schemaLocation="
http://www. springframework.org/sch ema/beans
http://www. springframework.org/sch ema/beans/spring-beans-3.0.xsd
http://www. springframework.org/sch ema/aop
http://www. springframework.org/sch ema/aop/spring-aop-3.0.xsd
http://www. springframework.org/sch ema/tx
http://www. springframework.org/sch ema/tx/spring-tx-3.0.xsd
http://www. springframework.org/sch ema/context
http://www. springframework.org/sch ema/context/spring-context-3.0.xsd ">
<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的配置简化了----->感觉还不错---->现在那个数据库连接池的好处还没有体现出来---->后面可能会接触到
加油坚持---->