mysql事务

事务的传播行为和隔离级别

喜你入骨 提交于 2019-12-03 13:05:16
事务使用步骤如下: 步骤一、在spring配置文件中引入<tx:>命名空间 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> 步骤二、具有@Transactional 注解的bean自动配置为声明式事务支持 <!-- 事务管理器配置, Hibernate单数据源事务 --> <bean id="defaultTransactionManager" class="org.springframework.orm.hibernate3

Spring事务

妖精的绣舞 提交于 2019-12-03 12:14:31
Spring 事务配置说明 Spring 如果没有特殊说明,一般指是跟数据存储有关的数据操作事务操作;对于数据持久操作的事务配置,一般有三个对象,数据源,事务管理器,以及事务代理机制; Spring 提供了多种的底层数据源实现,以及多种类型的事务管理器;所有的管理器都基于 PlatformTransactionManager 接口实现各自的事务策略; Spring 事务管理采用 AOP 切面代理技术实现,AOP 用于分隔关注点,保证事务的原子性,采用一定的技术 把该关注点 (weaving) 织入到 待完善的关注点上,实现单独组件无法实现的功能,以解决面向对象编程在某些方式下难于实现的操作,更好的支持面向对象的开关原则(扩展开放,修改关闭)。 底层数据源配置 首选加载 数据源配置 .properties 文件; <bean id="loadProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:META-INF/mybatis/mysql.properties</value> <value>classpath:META-INF/spring

Spring小结

这一生的挚爱 提交于 2019-12-03 12:12:00
Spring 官方文档 https://spring.io/projects/spring-framework#learn IOC 控制反转是一种通过描述并通过第三方去生产或获取特定对象的方式 IOC创建对象方式 通过无参构造方法来创建 <bean id="user" class="com.pojo.User"> <property name="name" value="张三"/> </bean> 通过有参构造方法来创建 <!-- 第一种根据index参数下标设置 --> <bean id="user1" class="com.pojo.User"> <!-- index指构造方法 , 下标从0开始 --> <constructor-arg index="0" value="张三"/> </bean> <!-- 第二种根据参数名字设置 --> <bean id="user2" class="com.pojo.User"> <!-- name指参数名 --> <constructor-arg name="name" value="李四"/> </bean> <!-- 第三种根据参数类型设置 --> <bean id="user3" class="com.pojo.User"> <constructor-arg type="java.lang.String" value="王五"/>

java-day22

China☆狼群 提交于 2019-12-03 11:55:07
## 多表查询: * 查询语法: select 列名列表 from 表名列表 where.... * 准备sql # 创建部门表 CREATE TABLE dept( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) ); INSERT INTO dept (NAME) VALUES ('开发部'),('市场部'),('财务部'); # 创建员工表 CREATE TABLE emp ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10), gender CHAR(1), -- 性别 salary DOUBLE, -- 工资 join_date DATE, -- 入职日期 dept_id INT, FOREIGN KEY (dept_id) REFERENCES dept(id) -- 外键,关联部门表(部门表的主键) ); INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('孙悟空','男',7200,'2013-02-24',1); INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('猪八戒','男',3600,'2010-12-02

MySql学习笔记06

易管家 提交于 2019-12-03 11:51:09
课程回顾 一对一关联 案例1:查询每个员工的名字和主管领导的名字 select e.ename 员工姓名,m.ename 领导姓名from emp e join emp mon e.mgr=m.empno; 案例2: 查询主管领导名字为blake的所有员工名字 select e.ename 员工姓名,m.ename 领导姓名 from emp e join emp m on e.mgr=m.empno where m.ename='blake' 案例3:查询有商品的分类信息及上级分类信息 往t item category表内部插入以下数据 id 162 name 办公用品 id 229 name 文具 id 913 name 户外用品 -插入数据 insert into t item category (id,name) values(162,'办公用品'),(229,'文具'),(913,'户外用品'); -查询所有有商品的分类id SELECT DISTINCT category id FROM t item WHERE category id IS NOT NULL -查询分类详情 select * from t item category where id in (SELECT DISTINCT category id FROM t item WHERE category

Spring-事务

倾然丶 夕夏残阳落幕 提交于 2019-12-03 11:29:23
Spring 的事务管理是基于 AOP 实现的,而 AOP 是以方法为单位的。Spring 的事务属性分别为传播行为、隔离级别、只读和超时属性,这些属性提供了事务应用的方法和描述策略。 在 Java EE 开发经常采用的分层模式中,Spring 的事务处理位于业务逻辑层,它提供了针对事务的解决方案。 在 Spring 解压包的 libs 目录中,包含一个名称为 spring-tx-3.2.13.RELEASE.jar 的文件,该文件是 Spring 提供的用于事务管理的 JAR 包,其中包括事务管理的三个核心接口:PlatformTransactionManager、TransactionDefinition 和 TransactionStatus。 将该 JAR 包的后缀名 jar 改成 zip 的形式后,解压压缩包,进入解压文件夹中的 \org\springframework\transaction 目录后,该目录中的文件如图 1 所示。 图 1 事务管理核心接口 在图 1 中,方框所标注的三个文件就是本节将要讲解的核心接口。这三个核心接口的作用及其提供的方法如下。 1. PlatformTransactionManager PlatformTransactionManager 接口是 Spring 提供的平台事务管理器,用于管理事务。该接口中提供了三个事务操作方法,具体如下。

Mysql-基本的知识点

南笙酒味 提交于 2019-12-03 11:26:46
Mysql-操作基本知识点 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意:等号与值之间有空格) /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES -- 显示系统变量信息 /* 数据库操作 */ ------------------ -- 查看当前数据库 SELECT DATABASE(); -- 显示当前时间、用户名、数据库版本 SELECT now(), user(), version(); -- 创建库 CREATE DATABASE[ IF NOT EXISTS] 数据库名 数据库选项 数据库选项: CHARACTER SET charset_name COLLATE collation_name -- 查看已有库 SHOW DATABASES[ LIKE 'PATTERN'] -- 查看当前库信息 SHOW CREATE DATABASE 数据库名 -- 修改库的选项信息 ALTER DATABASE 库名 选项信息 -- 删除库 DROP DATABASE[ IF EXISTS]

事务的传播行为,隔离级别以及锁机制

混江龙づ霸主 提交于 2019-12-03 11:21:38
脏读,不可重复读和幻读。 脏读:读到未提交(uncommited)的数据 不可重复读:多次查询中(提交插入数据的事务) 幻读:在修改事务后(提交了一个添加的事务),之后查询数据以为出现幻觉    事务的隔离级别: read_uncommitted 最低的隔离级别 有脏读,不可重复读和幻读。 read_committed  看到已提交的数据 存在不可重复读和幻像读。 支持sqlsever repeatable_read 存在幻读 。支持mysql serializable    防止脏读,不可重复读外,还避免了幻像读。 MySQL默认的方式的:可重复读。    七种传播行为:  在我们用SSH开发项目的时候,我们一般都是将事务设置在Service层,那么当我们调用Service层的一个方法的时候它能够保证我们的这个方法中执行的所有的对数据库的更新操作保持在一个事务中,在事务层里面调用的这些方法要么全部成功,要么全部失败。那么事务的传播特性也是从这里说起的。   如果你在你的Service层的这个方法中,除了调用了Dao层的方法之外,还调用了本类的其他的Service方法,那么在调用其他的Service方法的时候,这个事务是怎么规定的呢,我必须保证我在我方法里掉用的这个方法与我本身的方法处在同一个事务中,否则如果保证事物的一致性。事务的传播特性就是解决这个问题的,“事务是会传播的

Spring事务终极版...

回眸只為那壹抹淺笑 提交于 2019-12-03 11:19:35
1.什么是事务   事务(TRANSACTION) 是作为单个逻辑工作单元执行的一系列操作。   多个操作作为一个整体向系统提交,要么都执行,要么都不执行   事务是一个无可再分的逻辑单元 2.事务的特性   四个属性,简称 ACDI属性   原子性( Atomicity )     事务是一个完整的操作,事务的各个操作都是不可再分的,要么都执行,要么都不执行   一致性( Consistency )     当事务完成后,数据必须处于一致性   隔离性( Isolation )     并发事务之间相互隔离,独立,他不应以任何形式依赖于或影响其他事务    持久性( Durability )     事务完成后,他对数据的修改是永久性的; 3.隔离问题    脏读     一个事务读到另一个事务没有提交的数据    不可重复读     一个事务读到另一个事务已经提交的数据(正常现象,主要发生在update)    幻读(虚读)     一个事务读到另一个事务已经提交的数据(正常现象,主要发生在insert) 4.隔离级别    read uncommitted:     读未提交。存在3个问题(脏读,可重复读,虚读)    read committed:     读已提交。解决脏读,存在2个问题(可重复读,虚读)    repeatable read:     可重复读。解决

Spring事务的理解

荒凉一梦 提交于 2019-12-03 11:18:23
事务的基本原理: Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 获取连接 Connection con = DriverManager.getConnection() 开启事务con.setAutoCommit(true/false); 执行CRUD 提交事务/回滚事务 con.commit() / con.rollback(); 关闭连接 conn.close(); 数据库隔离级别 隔离级别 隔离级别的值 导致的问题 Read-Uncommitted 0 导致脏读 Read-Committed 1 避免脏读,允许不可重复读和幻读 Repeatable-Read 2 避免脏读,不可重复读,允许幻读 Serializable 3 串行化读,事务只能一个一个执行,避免了脏读、不可重复读、幻读。执行效率慢,使用时慎重 脏读:一事务对数据进行了增删改,但未提交,另一事务可以读取到未提交的数据。如果第一个事务这时候回滚了,那么第二个事务就读到了脏数据。 不可重复读:一个事务中发生了两次读操作,第一次读操作和第二次操作之间,另外一个事务对数据进行了修改,这时候两次读取的数据是不一致的。 幻读:第一个事务对一定范围的数据进行批量修改,第二个事务在这个范围增加一条数据