spring + hibernate 数据库连接池

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

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

主要用的是spring+HibernateTemplate

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

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

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

准备相关的jar包


v2-db4510b5e4333469b57ede4755cc079d_b.jpg




v2-743eb43a5eea242546d160a124ee98e7_b.jpg


接下来创建一个项目


v2-4e8c1b5a1382ce534e2e836285e94db6_b.jpg


创建一个category的实体类


v2-8b3635db02edba0df86b9103008edf0a_b.jpg


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


v2-63479b17960b24c9c9ff5fe21c78d4ec_b.jpg


接下来就是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相关配置



v2-0dceff31059603d0cc922514c3a57f0c_b.jpg


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


v2-ba5f8a505d6de61869b3b7d52bfe47ca_b.jpg


最后就是查询类的配置

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

find来查询所有的Category


v2-bdb0d402255600665302a74d5b0ad817_b.jpg


最后的查询数据库的数据


v2-ae078d33548b0362f09e001dd0180e0b_b.jpg


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

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


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

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


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


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


v2-348c1de1c7e357c5aabcc6a4d88aa6eb_b.jpg


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


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


加油坚持---->

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值