spring和hibernate整合,事务管理
一、spring和hibernate整合开发步骤
1 引入jar文件,用户libarary列表如下
- //spring_core
- spring3..9core\commons-logging-1.2.jar
- spring3..9core\spring-beans-3.2..RELEASE.jar
- spring3..9core\spring-context-3.2..RELEASE.jar
- spring3..9core\spring-core-3.2..RELEASE.jar
- spring3..9core\spring-expression-3.2..RELEASE.jar
- //hibernate core
- hibernate3.6core\antlr-2.7..jar
- hibernate3.6core\commons-collections-3.1.jar
- hibernate3.6core\dom4j-1.6..jar
- hibernate3.6core\hibernate3.jar
- hibernate3.6core\hibernate-jpa-2.0-api-1.0..Final.jar
- hibernate3.6core\javassist-3.12..GA.jar
- hibernate3.6core\jta-1.1.jar
- hibernate3.6core\slf4j-api-1.6..jar
- hibernate3.6core\slf4j-nop-1.7..jar
- //DB_connector
- DB-connector\c3p0-0.9.1.2.jar
- DB-connector\mysql-connector-java-5.1.-bin.jar
- DB-connector\spring-jdbc-3.2..RELEASE.jar
- //AOP
- springAOP\aopalliance.jar
- springAOP\aspectjrt.jar
- springAOP\aspectjweaver.jar
- springAOP\spring-aop-3.2..RELEASE.jar
- //spring_ORM
- spring-ORM\spring-orm-3.2..RELEASE.jar
- spring-ORM\spring-tx-3.2..RELEASE.jar
2 Entity/Dao/Service类代码如下
- //entity/Employee.java
- public class Employee {
- private int id;
- private String ename;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getEname() {
- return ename;
- }
- public void setEname(String ename) {
- this.ename = ename;
- }
- }
- //dao/EmployeeDao.java
- public class EmployeeDao {
- private SessionFactory sessionFactory;
- public void setSessionFactory(SessionFactory sessionFactory) {
- this.sessionFactory = sessionFactory;
- }
- public void saveEmp(Employee emp){
- sessionFactory.getCurrentSession().save(emp);
- }
- }
- //service/EmployeeService.java
- public class EmployeeService {
- private EmployeeDao employeeDao;
- public void setEmployeeDao(EmployeeDao employeeDao) {
- this.employeeDao = employeeDao;
- }
- public void saveEmp(Employee emp){
- employeeDao.saveEmp(emp);
- }
- }
3 类对象和数据表关系映射配置,Employee.hbm.xml
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- <hibernate-mapping
- package="com.huitong.entity">
- <class name="Employee" table="employee">
- <id name="id" column="id">
- <generator class="native"></generator>
- </id>
- <property name="ename" column="ename"></property>
- </class>
- </hibernate-mapping>
4 Spring和hibernate/事务配置都放在一个配置文件中bean.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:p="http://www.springframework.org/schema/p"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop.xsd">
- <!-- 配置dataSource -->
- <bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
- <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
- <property name="jdbcUrl" value="jdbc:mysql:///day26?useSSL=true"></property>
- <property name="user" value="root"></property>
- <property name="password" value=""></property>
- <property name="initialPoolSize" value=""></property>
- <property name="maxPoolSize" value=""></property>
- <property name="maxStatements" value=""></property>
- <property name="acquireIncrement" value=""></property>
- </bean>
- <!-- 配置sessionFactory -->
- <bean id="sessionFac" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <!-- 2.1 配置数据源 -->
- <property name="dataSource" ref="c3p0DataSource"></property>
- <!-- 2.2 数据库其他配置 -->
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
- <prop key="hibernate.show_sql">true</prop>
- </props>
- </property>
- <!-- 2.3 加载映射文件 -->
- <property name="mappingLocations">
- <list>
- <value>classpath:com/huitong/entity/*.hbm.xml</value>
- </list>
- </property>
- </bean>
- <!-- 3 配置dao/service/action类 -->
- <bean id="employeeDao" class="com.huitong.dao.EmployeeDao">
- <property name="sessionFactory" ref="sessionFac"></property>
- </bean>
- <bean id="employeeService" class="com.huitong.service.EmployeeService">
- <property name="employeeDao" ref="employeeDao"></property>
- </bean>
- <!-- 4 事务配置 -->
- <!-- 4.1 transaction manager class config -->
- <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <property name="sessionFactory" ref="sessionFac"></property>
- </bean>
- <!-- 4.2 transaction advice config -->
- <tx:advice id="txAdvice" transaction-manager="txManager">
- <tx:attributes>
- <tx:method name="get*" read-only="true"/>
- <tx:method name="query*" read-only="true"/>
- <tx:method name="*"/>
- </tx:attributes>
- </tx:advice>
- <!-- 4.3 AOP config -->
- <aop:config>
- <aop:pointcut expression="execution(* com.huitong.service.*.save*(..))" id="pt"/>
- <aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>
- </aop:config>
- </beans>
5 至此完成开发,简单测试如下
- public void fun1(){
- ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
- EmployeeService employeeService = (EmployeeService) ac.getBean("employeeService");
- System.out.println(employeeService); // spring ok?
- Employee employee = new Employee();
- employee.setEname("good");
- employeeService.saveEmp(employee); //hibernate ok?
- }
二、事务配置
1) 声明事务管理器类
2)事务增强
3)AOP配置拦截点
spring和hibernate整合,事务管理的更多相关文章
- spring与hibernate整合事务管理的理解
在谈Spring事务管理之前我们想一下在我们不用Spring的时候,在Hibernate中我们是怎么进行数据操作的.在Hibernate中我们每次进行一个操作的的时候我们都是要先开启事务,然后进行数据 ...
- Spring+SpringMVC+Hibernate小案例(实现Spring对Hibernate的事务管理)
原文地址:https://blog.csdn.net/jiegegeaa1/article/details/81975286 一.工作环境 编辑器用的是MyEclipse,用Mysql数据库,mave ...
- Spring 与 mybatis整合---事务管理
MyBatis与Spring整合前后事务管理有所区别 整合前:通过 session = sessionFactory.openSession(true); //或者是false 设置事务是否自动提交: ...
- Spring第九篇【Spring与Hibernate整合】
前言 前面已经学习了如何使用Spring与Struts2进行整合,本博文主要讲解如何使用Spring对Hibernate进行整合 Spring和Hibernate整合的关键点: SessionFact ...
- Spring与Hibernate整合,实现Hibernate事务管理
1.所需的jar包 连接池/数据库驱动包 Hibernate相关jar Spring 核心包(5个) Spring aop 包(4个) spring-orm-3.2.5.RELEASE.jar ...
- 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...
- Spring structs2 hibernate 整合(ssh)
ssh项目jar包 项目内容: 1. 加入 Spring 1). 加入 jar 包2). 配置 web.xml 文件3). 加入 Spring 的配置文件.(application.xml) 2. 加 ...
- SSH框架之Spring+Struts2+Hibernate整合篇
回顾 -Hibernate框架 ORM: 对象关系映射.把数据库表和JavaBean通过映射的配置文件映射起来, 操作JavaBean对象,通过映射的配置文件生成SQL语句,自动执行.操作数据库. 1 ...
- Java进阶知识25 Spring与Hibernate整合到一起
1.概述 1.1.Spring与Hibernate整合关键点 1) Hibernate的SessionFactory对象交给Spring创建. 2) hibernate事务交给spring的声明 ...
随机推荐
- zabbix3.0的安装
Lamp环境搭建: #zabbix的版本,3.0之后的要求php版本5.4以上才支持 mysql需要对大小写敏感 编译安装PHP 下载 :wget http://mirrors.sohu.com/p ...
- Java原始封装常用HttpRequest
1. package com.jsoft.testjavathread.test1; import java.io.BufferedReader; import java.io.IOException ...
- 【mysql】mysql增加version字段实现乐观锁,实现高并发下的订单库存的并发控制,通过开启多线程同时处理模拟多个请求同时到达的情况 + 同一事务中使用多个乐观锁的情况处理
mysql增加version字段实现乐观锁,实现高并发下的订单库存的并发控制,通过开启多线程同时处理模拟多个请求同时到达的情况 ==================================== ...
- Spring WebSocket入门(一) 转载
本文转载自:http://www.jianshu.com/p/60799f1356c5 WebSocket是html5带来的一项重大的特性,使得浏览器与服务端之间真正长连接交互成为了可能,这篇文章会带 ...
- [Android Pro] 获取手机已经安装的应用 和 获取当前正在运行的所有进程(一个uid对应多个pid)
1: 获取PackageManager 获取全部静态已安装的应用: PackageManager pm = getPackageManager(); List<PackageInfo> i ...
- Openshift 节点添加和删除
1.节点添加 在新节点上编辑yum源/etc/yum.repo.d/ocp.repo /etc/hosts在主和节点上都加上相应信息 编辑host文件,加入 [OSEv3:children] mast ...
- requests访问https网站
如果报证书校验失败的问题,可以去除证书校验1 import requests requests.get('https://www.zhihu.com/',verify=False)
- iOS:多线程NSThread的详细使用
NSThread具体使用:直接继承NSObject NSThread:. 优点:NSThread 是轻量级的,使用简单 缺点:需要自己管理线程的生命周期.线程同步.线程同步对数据的加锁会有一定的系统开 ...
- Cannot generate SSPI context
请在参考如下文章前,重启服务器解决! 相信我 没错的! http://support.microsoft.com/kb/811889
- SQL精华应用
[精确到纳秒的时间函数] SYSDATETIME().SYSUTCDATETIME() ---- 精确程度取决于执行 SQL Server 实例的计算机硬件和 Windows 版本号 [ ...