一、spring和hibernate整合开发步骤

1 引入jar文件,用户libarary列表如下

  1. //spring_core
  2. spring3..9core\commons-logging-1.2.jar
  3. spring3..9core\spring-beans-3.2..RELEASE.jar
  4. spring3..9core\spring-context-3.2..RELEASE.jar
  5. spring3..9core\spring-core-3.2..RELEASE.jar
  6. spring3..9core\spring-expression-3.2..RELEASE.jar
  7.  
  8. //hibernate core
  9. hibernate3.6core\antlr-2.7..jar
  10. hibernate3.6core\commons-collections-3.1.jar
  11. hibernate3.6core\dom4j-1.6..jar
  12. hibernate3.6core\hibernate3.jar
  13. hibernate3.6core\hibernate-jpa-2.0-api-1.0..Final.jar
  14. hibernate3.6core\javassist-3.12..GA.jar
  15. hibernate3.6core\jta-1.1.jar
  16. hibernate3.6core\slf4j-api-1.6..jar
  17. hibernate3.6core\slf4j-nop-1.7..jar
  18.  
  19. //DB_connector
  20. DB-connector\c3p0-0.9.1.2.jar
  21. DB-connector\mysql-connector-java-5.1.-bin.jar
  22. DB-connector\spring-jdbc-3.2..RELEASE.jar
  23.  
  24. //AOP
  25. springAOP\aopalliance.jar
  26. springAOP\aspectjrt.jar
  27. springAOP\aspectjweaver.jar
  28. springAOP\spring-aop-3.2..RELEASE.jar
  29.  
  30. //spring_ORM
  31. spring-ORM\spring-orm-3.2..RELEASE.jar
  32. spring-ORM\spring-tx-3.2..RELEASE.jar

2 Entity/Dao/Service类代码如下

  1. //entity/Employee.java
  2. public class Employee {
  3. private int id;
  4. private String ename;
  5. public int getId() {
  6. return id;
  7. }
  8. public void setId(int id) {
  9. this.id = id;
  10. }
  11. public String getEname() {
  12. return ename;
  13. }
  14. public void setEname(String ename) {
  15. this.ename = ename;
  16. }
  17. }
  18.  
  19. //dao/EmployeeDao.java
  20. public class EmployeeDao {
  21. private SessionFactory sessionFactory;
  22.  
  23. public void setSessionFactory(SessionFactory sessionFactory) {
  24. this.sessionFactory = sessionFactory;
  25. }
  26.  
  27. public void saveEmp(Employee emp){
  28. sessionFactory.getCurrentSession().save(emp);
  29. }
  30.  
  31. }
  32.  
  33. //service/EmployeeService.java
  34. public class EmployeeService {
  35. private EmployeeDao employeeDao;
  36.  
  37. public void setEmployeeDao(EmployeeDao employeeDao) {
  38. this.employeeDao = employeeDao;
  39. }
  40.  
  41. public void saveEmp(Employee emp){
  42. employeeDao.saveEmp(emp);
  43. }
  44.  
  45. }

3 类对象和数据表关系映射配置,Employee.hbm.xml

  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5.  
  6. <hibernate-mapping
  7. package="com.huitong.entity">
  8.  
  9. <class name="Employee" table="employee">
  10. <id name="id" column="id">
  11. <generator class="native"></generator>
  12. </id>
  13.  
  14. <property name="ename" column="ename"></property>
  15. </class>
  16.  
  17. </hibernate-mapping>

4 Spring和hibernate/事务配置都放在一个配置文件中bean.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:aop="http://www.springframework.org/schema/aop"
  7. xmlns:tx="http://www.springframework.org/schema/tx"
  8. xsi:schemaLocation="
  9. http://www.springframework.org/schema/beans
  10. http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
  11. http://www.springframework.org/schema/context
  12. http://www.springframework.org/schema/context/spring-context.xsd
  13. http://www.springframework.org/schema/tx
  14. http://www.springframework.org/schema/tx/spring-tx.xsd
  15. http://www.springframework.org/schema/aop
  16. http://www.springframework.org/schema/aop/spring-aop.xsd">
  17.  
  18. <!-- 配置dataSource -->
  19. <bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  20. <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
  21. <property name="jdbcUrl" value="jdbc:mysql:///day26?useSSL=true"></property>
  22. <property name="user" value="root"></property>
  23. <property name="password" value=""></property>
  24. <property name="initialPoolSize" value=""></property>
  25. <property name="maxPoolSize" value=""></property>
  26. <property name="maxStatements" value=""></property>
  27. <property name="acquireIncrement" value=""></property>
  28. </bean>
  29.  
  30. <!-- 配置sessionFactory -->
  31. <bean id="sessionFac" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  32. <!-- 2.1 配置数据源 -->
  33. <property name="dataSource" ref="c3p0DataSource"></property>
  34.  
  35. <!-- 2.2 数据库其他配置 -->
  36. <property name="hibernateProperties">
  37. <props>
  38. <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
  39. <prop key="hibernate.show_sql">true</prop>
  40. </props>
  41. </property>
  42.  
  43. <!-- 2.3 加载映射文件 -->
  44. <property name="mappingLocations">
  45. <list>
  46. <value>classpath:com/huitong/entity/*.hbm.xml</value>
  47. </list>
  48. </property>
  49. </bean>
  50.  
  51. <!-- 3 配置dao/service/action类 -->
  52. <bean id="employeeDao" class="com.huitong.dao.EmployeeDao">
  53. <property name="sessionFactory" ref="sessionFac"></property>
  54. </bean>
  55.  
  56. <bean id="employeeService" class="com.huitong.service.EmployeeService">
  57. <property name="employeeDao" ref="employeeDao"></property>
  58. </bean>
  59.  
  60. <!-- 4 事务配置 -->
  61. <!-- 4.1 transaction manager class config -->
  62. <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  63. <property name="sessionFactory" ref="sessionFac"></property>
  64. </bean>
  65.  
  66. <!-- 4.2 transaction advice config -->
  67. <tx:advice id="txAdvice" transaction-manager="txManager">
  68. <tx:attributes>
  69. <tx:method name="get*" read-only="true"/>
  70. <tx:method name="query*" read-only="true"/>
  71. <tx:method name="*"/>
  72. </tx:attributes>
  73. </tx:advice>
  74.  
  75. <!-- 4.3 AOP config -->
  76. <aop:config>
  77. <aop:pointcut expression="execution(* com.huitong.service.*.save*(..))" id="pt"/>
  78. <aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>
  79. </aop:config>
  80.  
  81. </beans>

5 至此完成开发,简单测试如下

  1. public void fun1(){
  2. ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
  3. EmployeeService employeeService = (EmployeeService) ac.getBean("employeeService");
  4. System.out.println(employeeService); // spring ok?
  5.  
  6. Employee employee = new Employee();
  7. employee.setEname("good");
  8. employeeService.saveEmp(employee); //hibernate ok?
  9. }

二、事务配置

1) 声明事务管理器类

2)事务增强

3)AOP配置拦截点

spring和hibernate整合,事务管理的更多相关文章

  1. spring与hibernate整合事务管理的理解

    在谈Spring事务管理之前我们想一下在我们不用Spring的时候,在Hibernate中我们是怎么进行数据操作的.在Hibernate中我们每次进行一个操作的的时候我们都是要先开启事务,然后进行数据 ...

  2. Spring+SpringMVC+Hibernate小案例(实现Spring对Hibernate的事务管理)

    原文地址:https://blog.csdn.net/jiegegeaa1/article/details/81975286 一.工作环境 编辑器用的是MyEclipse,用Mysql数据库,mave ...

  3. Spring 与 mybatis整合---事务管理

    MyBatis与Spring整合前后事务管理有所区别 整合前:通过 session = sessionFactory.openSession(true); //或者是false 设置事务是否自动提交: ...

  4. Spring第九篇【Spring与Hibernate整合】

    前言 前面已经学习了如何使用Spring与Struts2进行整合,本博文主要讲解如何使用Spring对Hibernate进行整合 Spring和Hibernate整合的关键点: SessionFact ...

  5. Spring与Hibernate整合,实现Hibernate事务管理

    1.所需的jar包 连接池/数据库驱动包 Hibernate相关jar Spring 核心包(5个) Spring aop 包(4个) spring-orm-3.2.5.RELEASE.jar     ...

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

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

  7. Spring structs2 hibernate 整合(ssh)

    ssh项目jar包 项目内容: 1. 加入 Spring 1). 加入 jar 包2). 配置 web.xml 文件3). 加入 Spring 的配置文件.(application.xml) 2. 加 ...

  8. SSH框架之Spring+Struts2+Hibernate整合篇

    回顾 -Hibernate框架 ORM: 对象关系映射.把数据库表和JavaBean通过映射的配置文件映射起来, 操作JavaBean对象,通过映射的配置文件生成SQL语句,自动执行.操作数据库. 1 ...

  9. Java进阶知识25 Spring与Hibernate整合到一起

    1.概述 1.1.Spring与Hibernate整合关键点 1) Hibernate的SessionFactory对象交给Spring创建.    2) hibernate事务交给spring的声明 ...

随机推荐

  1. zabbix3.0的安装

    Lamp环境搭建:  #zabbix的版本,3.0之后的要求php版本5.4以上才支持 mysql需要对大小写敏感 编译安装PHP 下载 :wget http://mirrors.sohu.com/p ...

  2. Java原始封装常用HttpRequest

    1. package com.jsoft.testjavathread.test1; import java.io.BufferedReader; import java.io.IOException ...

  3. 【mysql】mysql增加version字段实现乐观锁,实现高并发下的订单库存的并发控制,通过开启多线程同时处理模拟多个请求同时到达的情况 + 同一事务中使用多个乐观锁的情况处理

    mysql增加version字段实现乐观锁,实现高并发下的订单库存的并发控制,通过开启多线程同时处理模拟多个请求同时到达的情况 ==================================== ...

  4. Spring WebSocket入门(一) 转载

    本文转载自:http://www.jianshu.com/p/60799f1356c5 WebSocket是html5带来的一项重大的特性,使得浏览器与服务端之间真正长连接交互成为了可能,这篇文章会带 ...

  5. [Android Pro] 获取手机已经安装的应用 和 获取当前正在运行的所有进程(一个uid对应多个pid)

    1: 获取PackageManager 获取全部静态已安装的应用: PackageManager pm = getPackageManager(); List<PackageInfo> i ...

  6. Openshift 节点添加和删除

    1.节点添加 在新节点上编辑yum源/etc/yum.repo.d/ocp.repo /etc/hosts在主和节点上都加上相应信息 编辑host文件,加入 [OSEv3:children] mast ...

  7. requests访问https网站

    如果报证书校验失败的问题,可以去除证书校验1 import requests requests.get('https://www.zhihu.com/',verify=False)

  8. iOS:多线程NSThread的详细使用

    NSThread具体使用:直接继承NSObject NSThread:. 优点:NSThread 是轻量级的,使用简单 缺点:需要自己管理线程的生命周期.线程同步.线程同步对数据的加锁会有一定的系统开 ...

  9. Cannot generate SSPI context

    请在参考如下文章前,重启服务器解决! 相信我 没错的! http://support.microsoft.com/kb/811889

  10. SQL精华应用

    [精确到纳秒的时间函数] SYSDATETIME().SYSUTCDATETIME()        ---- 精确程度取决于执行 SQL Server 实例的计算机硬件和 Windows 版本号 [ ...