文档章节

Spring,Hibernate框架整合

一个破名想半年
 一个破名想半年
发布于 2016/11/25 16:25
字数 1032
阅读 69
收藏 1

spring框架是贯穿在整个项目架构中的大型框架,主要体现在控制反转和面向切面,hibernate框架主攻点是对数据库进行持久化操作。

Hibernate与Spring的整合的好处是,可以将SessionFactory的实例交由Spring容器管理,那么我们只需要这一个实例就可以了。还有一点就是声明式的事务管理非常方便。

 需要以下配置:

  1、配置applicationContext.xml文件,添加配置sessionFactory的配置。

<!-- 配置SessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- 指定hibernate的配置文件位置 -->
        <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
        <!-- 配置c3p0数据库连接池 -->
        <property name="dataSource">
            <bean class="com.mchange.v2.c3p0.ComboPooledDataSource">
                <!-- 数据连接信息 -->
                <property name="jdbcUrl" value="${jdbcUrl}"></property>
                <property name="driverClass" value="${driverClass}"></property>
                <property name="user" value="${user}"></property>
                <property name="password" value="${password}"></property>
                <!-- 其他配置 -->
                <!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
                <property name="initialPoolSize" value="3"></property>
                <!--连接池中保留的最小连接数。Default: 3 -->
                <property name="minPoolSize" value="3"></property>
                <!--连接池中保留的最大连接数。Default: 15 -->
                <property name="maxPoolSize" value="5"></property>
                <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
                <property name="acquireIncrement" value="3"></property>
                <!-- 控制数据源内加载的PreparedStatements数量。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 -->
                <property name="maxStatements" value="8"></property>
                <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 -->
                <property name="maxStatementsPerConnection" value="5"></property>
                <!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
                <property name="maxIdleTime" value="1800"></property>
            </bean>
        </property>
    </bean>

2、因为下面的数据连接信息在不同项目里配置不同,其他的配置却是类似的,所以我们可以将这些变化的东西拿出来,放在属性文件里。

<!-- 数据连接信息 -->
                <property name="jdbcUrl" value="${jdbcUrl}"></property>
                <property name="driverClass" value="${driverClass}"></property>
                <property name="user" value="${user}"></property>
                <property name="password" value="${password}"></property>

 

 

 新建属性文件:jdbc.properties,具体内容为:

  

jdbcUrl        = jdbc:mysql:///oa2014
driverClass    = com.mysql.jdbc.Driver
user        = root
password    =123456

  通过<property name="jdbcUrl" value="${jdbcUrl}"></property>这种方式来使用。

  3、将属性文件导入,在applicationContext.xml里导入:

  

<!-- 导入外部的properties文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

  4、配置声明式事务管理。这里采用注解的方式。

<!-- 配置声明式事务管理(采用注解的方式) -->
    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <tx:annotation-driven transaction-manager="txManager"/>

 

  最后展示applicationContext.xml配置文件的全部内容:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
                http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
    
    <!-- 自动扫描与装配bean -->
    <context:component-scan base-package="cn.oa2014.oa"></context:component-scan>
    <!-- 导入外部的properties文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!-- 配置SessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- 指定hibernate的配置文件位置 -->
        <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
        <!-- 配置c3p0数据库连接池 -->
        <property name="dataSource">
            <bean class="com.mchange.v2.c3p0.ComboPooledDataSource">
                <!-- 数据连接信息 -->
                <property name="jdbcUrl" value="${jdbcUrl}"></property>
                <property name="driverClass" value="${driverClass}"></property>
                <property name="user" value="${user}"></property>
                <property name="password" value="${password}"></property>
                <!-- 其他配置 -->
                <!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
                <property name="initialPoolSize" value="3"></property>
                <!--连接池中保留的最小连接数。Default: 3 -->
                <property name="minPoolSize" value="3"></property>
                <!--连接池中保留的最大连接数。Default: 15 -->
                <property name="maxPoolSize" value="5"></property>
                <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
                <property name="acquireIncrement" value="3"></property>
                <!-- 控制数据源内加载的PreparedStatements数量。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 -->
                <property name="maxStatements" value="8"></property>
                <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 -->
                <property name="maxStatementsPerConnection" value="5"></property>
                <!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
                <property name="maxIdleTime" value="1800"></property>
            </bean>
        </property>
    </bean>

    <!-- 配置声明式事务管理(采用注解的方式) -->
    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <tx:annotation-driven transaction-manager="txManager"/>
</beans>

 

 

  

© 著作权归作者所有

一个破名想半年
粉丝 0
博文 16
码字总数 9936
作品 0
青浦
私信 提问
基于maven的ssh框架一步一步搭建(一)

一、新建maven项目,配置ssh框架pom的最低支持 1、新建一个maven项目 2、添加一个web.xml <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-in......

漂泊者及其影子
2014/07/16
0
3
细谈Spring(十一)深入理解spring+struts2整合(附源码)

Spring和struts2是我们在项目架构中用的比较多的两个框架,怎么才能把这两个框架用好,怎么来整合是我们掌握运用这两个框架的关键点,下面我们就怎么来整合,从哪来整合,为什么要整合,从这...

youyu2299
2013/12/06
0
0
Java程序员从笨鸟到菜鸟之(八十二)细谈Spring(十一)深入理解spring+struts2整合(附源码)

Spring和struts2是我们在项目架构中用的比较多的两个框架,怎么才能把这两个框架用好,怎么来整合是我们掌握运用这两个框架的关键点,下面我们就怎么来整合,从哪来整合,为什么要整合,从这...

长平狐
2012/11/12
196
0
ssh三个框架各自所有版本下载地址

ssh三个框架各自所有版本下载地址如下 Struts framework 下载地址: http://mirror.bjtu.edu.cn/apache/struts/binaries/ hibernate framework 下载地址:http://www.mirrorservice.org/site......

又有薄荷香
2014/03/26
0
0
spring3.1.1的各个jar作用

最近开始深入学习spring了解到的一些spring知识分享给大家看看。 org.springframework.aop-3.1.1.RELEASE.jar ---- ----spring 的面向切面编程,提供AOP(面向切面编程)实现, org.springfr...

dml124
2012/07/13
0
2

没有更多内容

加载失败,请刷新页面

加载更多

中奖名单 | “赠书活动”中奖名单公布

在上周的赠书活动中, 小伙伴们踊跃参与! 京小云也很认真地进行了统计, 非常感谢大家的参与和支持! 下面公布中奖的名单~ 请中奖的小伙伴于5个工作日内 在微信公众号后台留下你的联系地址 ...

京东云技术新知
13分钟前
1
0
云原生生态周报 Vol. 11 | K8s 1.16 早知道

业界要闻 Pivotal 发布了完全基于 Kubernetes 的 Pivotal Application Service(PAS)预览版 这意味着 Pivotal 公司一直以来在持续运作的老牌 PaaS 项目 Cloud Foundry (CF)终于得以正式拥...

阿里巴巴云原生
13分钟前
0
0
低版本xcode真机调试iOS 12.3.1

老款mac pro已经升级不了系统了,导致最新版的xcode10.2及以上也安装不了,最新版的ios12.3.1也联机调试不了,apple是要逼着大家升级硬件啊,软件即服务,就是这样来的,大部分计算机软件公司...

swingcoder
14分钟前
2
0
浅谈堆排序

一:定义 堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆排序是一种树形选择排序,在排序过程中可以把元素看成是一颗完全二叉树,每个节点都大(小)于它的两个子...

无名氏的程序员
16分钟前
2
0
Alibaba Cloud Linux 2 开源后又有什么新动作?

阿里妹导读:2019 年 4 月,Alibaba Cloud Linux 2 (Aliyun Linux 2) 正式开源。时至今日,已经走过三个月的里程。在这段时间内,这个刚诞生不久的为阿里云 ECS 环境定制优化的 Linux 操作系...

阿里云官方博客
16分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部