SSH、IBatis等框架相关知识

Spring的事务

事务使用ACID特性来衡量事务的质量。这些特性包括原子性、一致性

隔离性和持久性。

a.原子性:事务必须是原子的。不可分割的,在事务结束的时候,事务中的所有任务必须全部成功完成或者全部任务失败,事务回滚到事务开始之前的状态

b.一致性:数据库中的所有数据必须和现实保持一致。

c.隔离性:事务与事务之间的屏障。每个事务必须与其他事务的执行结果隔离开,直到该事务执行完毕。

d.持久性:如果事务成功执行,无论系统发生什么情况,事务的持久性必须保证事务的执行结果是永存的。

在事务处理中有违反ACID特性的三个问题:脏读、不可重复读和幻读。

脏读:当一个事务读取了一个事务尚未提交的更新,就叫作脏读取。

不可重复读:在一个事务中执行多次同样的查询操作,但每次查询的结果都不相同,叫不可重复读

幻读:一个事务的更新结果影响到了另一个事务的问题。

Spring的事务管理器有5个,也即DataSourceTransactionManager(JDBC事务管理器),HibernateTransactionManager(Hibernate事务管理器),JdoTransactionManager(JDO事务管理器),JtaTransactionManager(Jta事务管理器)以及Apache的OJB事务管理器。

Spring支持声明式事务,并建议这样做。因为Spring中的事务是基于AOP实现的,而Spring的AOP是以方法为单位的,所以Spring的事务属性就是对事务应用到方法的策略描述,这些属性分别为:传播行为、隔离级别、只读和超时属性。

事务的传播行为是事务应用于方法的边界,它定义了事务的建立、暂停等行为。

事务的隔离级别:为了解决事务之间的3个缺陷,必须在事务之间建立隔离关系来保障事务的完整性。

事务的只读属性:在数据库的操作中,查询是使用最频繁的操作,每次执行查询操作时都要从数据库中重新读取数据,有时多次读取的数据都是相同的,这样的操作浪费了系统资源和影响了系统速度。如果将食物声明为只读,那么数据库可以根据事务的特性优化事务的读取操作。事务的只读属性需要配合事务的PROPAGATION_REQUIRED、PROPAGATION_REQUIRES_NEW和PROPAGATION_NESTED传播行为共同设置。

事务的超时属性:设置了事务的超时时间。

Spring的声明式事务不涉及组建依赖关系,它通过AOP实现事务管理。在使用Spring的声明式事务时不需要编写任何代码。使用事务代理工厂来管理事务。事务代理工厂TransactionProxyFactoryBean包含了事务拦截器、目标代理和事务的属性设置。

Spring使用注解式进行事务管理,配置示例

步骤一、在Spring配置文件中引入<tx:>命名空间

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"  
 xmlns:context="http://www.springframework.org/schema/context"  
 xmlns:p="http://www.springframework.org/schema/p"  
 xmlns:mvc="http://www.springframework.org/schema/mvc"  
 xmlns:aop="http://www.springframework.org/schema/aop"  
 xmlns:tx="http://www.springframework.org/schema/tx"  
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
 xsi:schemaLocation="http://www.springframework.org/schema/beans  
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
      http://www.springframework.org/schema/context  
      http://www.springframework.org/schema/context/spring-context.xsd  
      http://www.springframework.org/schema/mvc  
      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
      http://www.springframework.org/schema/aop  
      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
      http://www.springframework.org/schema/tx 
      http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

步骤二、具有@Transactional注解的bean自动配置为声明式事务

<!-- 事务管理 -->
     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
     	<property name="dataSource" ref="dataSource"></property>
     </bean>
     <!-- 配置事务增强器 -->
	<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
		<!-- 配置详细事务处理语义 -->
		<tx:attributes>
			<tx:method name="insert*" propagation="REQUIRED"/>
			<tx:method name="update*" propagation="REQUIRED"/>
			<tx:method name="delete*" propagation="REQUIRED"/>
			<tx:method name="save*" propagation="REQUIRED"/>
			<tx:method name="add*" propagation="REQUIRED"/>
			<tx:method name="saveOrUpdate*" propagation="REQUIRED"/>
			<tx:method name="get*" propagation="SUPPORTS"/>
			<tx:method name="find*" propagation="SUPPORTS"/>
			<tx:method name="load*" propagation="SUPPORTS"/>
			<tx:method name="select*" propagation="SUPPORTS"/>
			<!-- 其他采用默认方式 -->
			<tx:method name="*"/>
		</tx:attributes>
	</tx:advice>
	<!-- SpringAOP事务管理 -->
	<aop:config>
		<aop:pointcut expression="execution(* com.jf.service..*impl.*(..))" id="transactionPointCut"/>
		<!-- 指定txAdvice切入点应用txAcvice食物增强处理 -->
		<aop:advisor advice-ref="transactionAdvice" pointcut-ref="transactionPointCut"/>
	</aop:config>
时间: 2024-10-13 06:46:50

SSH、IBatis等框架相关知识的相关文章

Java复习第三天---集合框架的相关知识

集合框架总览: Collection 接口常用方法 //1.add()向集合中添加数据 c.add(apple01); c.add(apple02); c.add(apple03); c.add(apple04); c.add(apple05); //2.isEmepty()检测当前集合是否为空 boolean empty = c.isEmpty(); System.out.println("is empty:"+empty); //3.size()返回当前集合的长度 int size

集合类框架_List相关知识

集合类框架是java中比较中重要的框架之一,在Thinking in Java中集合又称为容器. 这篇博文先介绍下List相关知识.List是用于存储序列,它是一个独立的元素序列,这些元素都服从一条或多条规则.List又分为:ArrayList.LinkedList和Vector,而List又属于Collection容器类库. 1.做Java开发,List肯定用过,你都用过哪些List的实现类呢? ArrayList和LinkedList 2.ArrayList和LinkList的底层实现么?

黑马程序员---Objective-C基础学习---类、对象、方法相关知识笔记

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 类.对象.方法相关知识笔记 Objective-C相对于C语言有了面向对象的特性,但是ObjC又没有其他面向对象语言那么多语法特性,ObjC本身对面向对象进行了精简.下面是一些相关知识笔记. 类定义 成员变量 方法和属性 self关键字 类定义 在C#.Java等其他高级语言中定义一个类是相当简单点的,直接一个关键字class加一对大括号基本就完成了,但是在ObjC中类的定义相对变化比较大.现

(整理)ubuntu 的 相关知识(来自 鸟哥的私房菜)

1. Linux 文件权限概念 $ ls 察看文件的指令 $ ls -al 出所有的文件详细的权限与属性 (包含隐藏档,就是文件名第一个字符为『 . 』的文件) 在你第一次以root身份登入Linux时, 如果你输入上述指令后,应该有上列的几个东西,先解释一下上面七个字段个别的意思: 图2.1.1.文件属性的示意图 第一栏代表这个文件的类型与权限(permission): 这个地方最需要注意了!仔细看的话,你应该可以发现这一栏其实共有十个字符:(图2.1.1及图2.1.2内的权限并无关系) 图2

视频压缩算法的相关知识

视频压缩算法的相关知识MPEG-1MPEG 视频压缩编码后包括三种元素:I帧(I-frames).P帧(P-frames)和B帧(B-frames).在MPEG编码的过程中,部分视频帧序列压缩成为I帧:部分压缩成P帧:还有部分压缩成B帧.I帧法是帧内压缩法,也称为“关键帧”压缩法.I帧法是基于离散余弦变换DCT( Discrete Cosine Transform )的压缩技术,这样的算法与JPEG压缩算法相似.採用I帧压缩可达到1/6的压缩比而无明显的压缩痕迹. 在保证图像质量的前提下实现高压

iOS网络相关知识总结

iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Request的URL, HTTPMethod, HTTPHeader, HTTPBody等信息.一般发请求尽量不要使用NSURLRequest,因为它不能设置请求方式.请求超时等(总之什么都不能设置).通常发请求都使用NSMutableURLRequest,可以进行更多的设置. 补充1:因为NSURL不支持

相关知识教你了解Linux配置显卡

本文由e良师益友网提供 Linux系统自带的驱动程序只包括了nVIDIA 2D加速,如果需要获取更好的3D加速效果,需要安装nVIDIA专用驱动软件工具包.3D 硬件加速在需要绘制三度空间对象的时候是非常宝贵的,例如游戏.三维CAD.以及 3D 成像. 一.准备工作 在配置nVIDIA显卡 之前, 您需要了解所安装的系统的下列信息:显示器规格,显示卡的芯片类型,显示卡的显存容量, 显示器的规格被 X11 用来决定显示的分辨率和刷新率.这些规格通常可以从显示器所带的文档中, 以及制造商的网站找到.

HTML入门基础教程相关知识

HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文本文档的一种简单标记语言,经常用来创建web页面.html文件是带有格式标识符和超文本链接的内嵌代码的ascii 文本文件——html结构了解. html文本是由 html命令组成的描述性文本,html 命令可以说明文字. 图形.动画.声音.表格.链接等. html网页结构包括头部 (head).主

iOS通讯录相关知识-浅析

本文来自于:贞娃儿的博客  http://blog.sina.com.cn/zhenwawaer 在开发一些应用中,我们如果需要iPhone设备中的通讯录信息.或者,需要开发通讯录相关的一些功能.那么就需要了解一下iOS中关于通讯录编程的相关知识. 一.AddressBook.framework-通讯录框架 关于通讯录的相关操作,被集成在AddressBook.framework框架中.所以,我们在使用通讯录相关功能的时候,需要在项目中引入AddressBook.framework框架.并且在需