1、配置数据源

数据库连接基本信息存放到properties文件中,因此先加载properties文件

 <!-- jdbc连接信息 -->
     <context:property-placeholder
         location="classpath:io/shuqi/ssh/spring/transactionalAnnotation/jdbc.properties"/>

使用DBCP数据源配置xml如下

 <!-- dbcp数据源配置 -->
     <bean id="dbcpDataSources" class="org.apache.commons.dbcp2.BasicDataSource">
         <property name="driverClassName" value="${jdbc.driver}" />
         <property name="username" value="${jdbc.user}" />
         <property name="password" value="${jdbc.password}" />
         <property name="url" value="${jdbc.url}" />

         <property name="initialSize" value="${jdbc.initPoolSize}"></property>
         <property name="maxOpenPreparedStatements" value="${jdbc.maxPoolSize}"></property>
     </bean>

使用C3P0数据源配置

 <!-- c3p0数据源配置 -->
     <bean id="c3p0DataSources" class="com.mchange.v2.c3p0.ComboPooledDataSource">
         <property name="driverClass" value="${jdbc.driver}" />
         <property name="user" value="${jdbc.user}" />
         <property name="password" value="${jdbc.password}" />
         <property name="jdbcUrl" value="${jdbc.url}" />

         <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
         <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
     </bean>

2、配置Hibernate的sessionFactory

hibernate3的sessionFactory有两种方式配置,分别是org.springframework.orm.hibernate3.LocalSessionFactoryBean基于*.hbm.xml 与org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean 基于 JPA注解方式的配置

  1. 使用 org.springframework.orm.hibernate3.LocalSessionFactoryBean的方式
 <bean id="sessionFactory"
         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
         p:dataSource-ref="c3p0DataSources">
         <property name="hibernateProperties">
             <props>
                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                 <prop key="hibernate.hbm2ddl.auto">update</prop>
                 <prop key="hibernate.show_sql">true</prop>
             </props>
         </property>
         <!-- 使用通配符 Resources -->
         <property name="mappingLocations">
             <list>
                 <value>classpath:io/shuqi/ssh/spring/transactionalAnnotation/hibernate3/*.hbm.xml</value>
             </list>
         </property>
     </bean>

使用通配符的方式(*.hbm.xml)

  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" p:dataSource-ref="c3p0DataSources">
          <property name="hibernateProperties">
             <props>
                  <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                  <prop key="hibernate.hbm2ddl.auto">update</prop>
                  <prop key="hibernate.show_sql">true</prop>
              </props>
          </property>
          <!-- 使用逐一列出配置文件的方式 -->
          <property name="mappingResources">
              <list><value>io/shuqi/ssh/spring/transactionalAnnotation/hibernate3/User.hbm.xml</value>
             </list>
          </property>

     </bean>

使用逐一列出配置Mapping文件的方式

2.使用org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean的方式

 <bean id="sessionFactory"
         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
         p:dataSource-ref="c3p0DataSources">
         <property name="hibernateProperties">
             <props>
                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                 <prop key="hibernate.hbm2ddl.auto">update</prop>
                 <prop key="hibernate.show_sql">true</prop>
             </props>
         </property>
          <property name="annotatedClasses">
              <list>
                <value>io.shuqi.ssh.spring.transactionalAnnotation.hibernate3.User</value>
              </list>
           </property>
     </bean>

Hibernate3使用注解的反射,并逐一列出类的方式

 <bean id="sessionFactory"
         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
         p:dataSource-ref="c3p0DataSources">
         <property name="hibernateProperties">
             <props>
                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                 <prop key="hibernate.hbm2ddl.auto">update</prop>
                 <prop key="hibernate.show_sql">true</prop>
             </props>
         </property>
         <property name="packagesToScan" value="io.shuqi.ssh.spring.transactionalAnnotation.hibernate3"/>
     </bean>

Hibernate基于注解配置,使用包扫描的方式

Hibernate4的sessionFactory与Hibernate3的配置差不多,只是Hibernate3的两个类在Hibernate4变为了一个类(org.springframework.orm.hibernate4.LocalSessionFactoryBean)

 <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
           p:dataSource-ref="c3p0DataSources">
         <property name="hibernateProperties">
             <props>
                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                 <prop key="hibernate.hbm2ddl.auto">update</prop>
                 <prop key="hibernate.show_sql">true</prop>
             </props>
         </property>
         <property name="packagesToScan" value="io.shuqi.ssh.spring.transactionalAnnotation.hibernate4"/>
     </bean>

Hibernate4基于注解,并使用包扫描的方式

3、配置Spring的事务管理,将程序的事务管理交由Spring管理

 <!-- 将事务交由Spring管理 -->
     <bean id="transactionManager"
           class="org.springframework.orm.hibernate4.HibernateTransactionManager"
           p:sessionFactory-ref="sessionFactory"/>

4、启用Spring的@Transaction注解

 <!-- 开启spring注解驱动,及@Transaction注解的开启 -->
     <tx:annotation-driven transaction-manager="transactionManager"/>

5、项目的maven依赖

 <properties>
         <spring.version4.1>4.1.6.RELEASE</spring.version4.1>
         <spring.version4>4.0.9.RELEASE</spring.version4>
         <spring.version3>3.2.13.RELEASE</spring.version3>
         <hibernate4.version>4.3.10.Final</hibernate4.version>
         <hibernate3.version>3.6.10.Final</hibernate3.version>
         <!-- 软件版本配置 -->
         <junit.version>4.12</junit.version>
         <jackjson.version>2.5.4</jackjson.version>
         <spring.version>4.1.6.RELEASE</spring.version>
         <jstl.version>1.2</jstl.version>
         <el.version>1.1.2</el.version>
         <c3p0.version>0.9.5</c3p0.version>
         <dbcp.version>2.1</dbcp.version>
         <mysql.version>5.1.35</mysql.version>
         <hibernate.version>3.6.10.Final</hibernate.version>
         <javassist.version>3.13.0-GA</javassist.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>

     <dependencies>
         <!-- 测试时依赖包 -->
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>${junit.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-test</artifactId>
             <version>${spring.version4.1}</version>
             <scope>test</scope>
         </dependency>
         <!-- Spring 核心包 -->
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-core</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-beans</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-context</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-context-support</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-expression</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-aop</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-jdbc</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-orm</artifactId>
             <version>${spring.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-tx</artifactId>
             <version>${spring.version}</version>
         </dependency>

         <!-- c3p0数据源 -->
         <dependency>
             <groupId>com.mchange</groupId>
             <artifactId>c3p0</artifactId>
             <version>${c3p0.version}</version>
         </dependency>
         <!-- dbcp数据源 -->
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-dbcp2</artifactId>
             <version>${dbcp.version}</version>
         </dependency>

         <!-- mysql 驱动 -->
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <version>${mysql.version}</version>
         </dependency>

         <!-- hibernate -->
         <dependency>
             <groupId>org.hibernate</groupId>
             <artifactId>hibernate-core</artifactId>
             <version>${hibernate.version}</version>
         </dependency>

         <!-- hibernate3.6.10依赖 -->
         <dependency>
             <groupId>org.javassist</groupId>
             <artifactId>javassist</artifactId>
             <version>${javassist.version}</version>
         </dependency>

     </dependencies>

maven依赖

spring与hibernate整合配置基于Annotation注解方式管理实务的更多相关文章

  1. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring声明式事务管理(基于Annotation注解方式实现)

    在 Spring 中,除了使用基于 XML 的方式可以实现声明式事务管理以外,还可以通过 Annotation 注解的方式实现声明式事务管理. 使用 Annotation 的方式非常简单,只需要在项目 ...

  2. Hibernate 零配置之Annotation注解

    JPA规范推荐使用Annotation来管理实体类与数据表之间的映射关系,从而避免同时维护两份文件(Java 实体类 和 XML 映射文件),将映射信息(写在Annotation中)与实体类集中在一起 ...

  3. 基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)

    1.导入jar watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400 ...

  4. 基于注解Spring MVC综合Hibernate(需要jar包,spring和Hibernate整合配置,springMVC组态,重定向,)批量删除

    1.进口jar 2.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app ver ...

  5. Spring Boot CRUD+分页(基于Mybatis注解方式)

    步骤一:关于Mybatis Mybatis 是用来进行数据库操作的框架.其中分页使用Mybatis中的PageHelper插件. Mybatis与hibernate对比: 1.hibernate是一个 ...

  6. Spring+Hibernate整合配置 --- 比较完整的spring、hibernate 配置

    Spring+Hibernate整合配置 分类: J2EE2010-11-25 17:21 16667人阅读 评论(1) 收藏 举报 springhibernateclassactionservlet ...

  7. 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)

    轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...

  8. 框架篇:Spring+SpringMVC+hibernate整合开发

    前言: 最近闲的蛋疼,搭个框架写成博客记录下来,拉通一下之前所学知识,顺带装一下逼. 话不多说,我们直接步入正题. 准备工作: 1/ IntelliJIDEA的安装配置:jdk/tomcat等..(本 ...

  9. spring+springmvc+hibernate 整合

    三大框架反反复复搭了很多次,虽然每次都能搭起来,但是效率不高.最近重新搭了一次,理顺了思路,整理了需要注意的地方,分享出来. 工具:Eclipse(jdk 1.7) spring和hibernate版 ...

随机推荐

  1. SessionState的配置 [转载]

    ASP.NET会话状态模块在Web.config文件中<System.web>标记下的<Sessionstate>标记的mode属性来决定该属性的四种可能的值: Off. In ...

  2. linux安装桌面软件

    CentOS 作为服务器的操作系统是很常见的,但是因为需要稳定而没有很时髦的更新,所以很少做为桌面环境.在服务器上通常不需要安装桌面环境,最小化地安装 CentOS(也就是 minimal CentO ...

  3. Linux学习之less命令

    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more 更加的有弹性.在 more 的时候,我们并没有办法向前面翻 ...

  4. mysql 索引创建规则

    1.表的主键.外键必须有索引:2.数据量超过300的表应该有索引: 3.经常与其他表进行连接的表,在连接字段上应该建立索引: 4.经常出现在Where子句中的字段,特别是大表的字段,应该建立索引: 5 ...

  5. 深入理解this对象

    最近一直在看js关于面向对象编程方面的东西,那么this肯定是需要一个被吃透 理解 同时灵活运用的对象 现在总结一下自己的学习成果: 我们可以用一句很形象的话来理解什么是this关键字? " ...

  6. 引用(ajaxfileupload.js) ajaxfileupload.js报这错jQuery.handleError is not a function

    jQuery.handleError is not a function 原因是,经测试handlerError只在jquery-1.4.2之前的版本中存在,jquery-1.6 和1.7中都没有这个 ...

  7. 退货行RMA编号改为必输选项

    应用 Oracle Inventory 层 Level Function 函数名 Funcgtion Name RCV_RCVTXERE 表单名 Form Name RCVTXERE 说明 Descr ...

  8. 你会用shuffle打乱列表吗?

    在网站上我们经常会看到关键字云(Word Cloud)和标签云(Tag Cloud),用于表明这个关键字或标签是经常被查阅的,而且还可以看到这些标签的动态运动,每次刷新都会有不一样的关键字或便签,让浏 ...

  9. https://repo1.maven.org/maven2/com/github/,开源软件清单list

    Index of /maven2/com/github/ ../ 0312birdzhang/ 26-Jun-2015 07:21 - 120011676/ 22-Mar-2016 11:16 - 1 ...

  10. 排序方法之标准库中的快排 qsort ()函数

    C标准库qsort()函数的用法(快排) 使用快速排序例程进行排序 头文件:stdlib.h 用 法: void qsort(void *base, int  nelem, int  width, i ...