事务管理

Jpa学习(一)

吃可爱长大的小学妹 提交于 2020-01-23 09:40:22
JPA学习总结 JPA简介 JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 JPA包含的技术 ORM映射元数据 JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中; API 用来操作实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。 查询语言 这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。 引入相关jar包 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0<

Seata简介

久未见 提交于 2020-01-22 16:45:41
简介 Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。支持AT、TCC、SAGA、XA四种模式,对微服务框架支持友好。 如下图所示,Seata 中有三大模块,分别是 TM、RM 和 TC。 其中 TM 和 RM 是作为 Seata 的客户端与业务系统集成在一起,TC 作为 Seata 的服务端独立部署。 TC - 事务协调者 维护全局和分支事务的状态,驱动全局事务提交或回滚。 TM - 事务管理器 定义全局事务的范围:开始全局事务、提交或回滚全局事务。 RM - 资源管理器 管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。 在 Seata 中,分布式事务的执行流程: TM 开启分布式事务(TM 向 TC 注册全局事务记录); 按业务场景,编排数据库、服务等事务内资源(RM 向 TC 汇报资源准备状态 ); TM 结束分布式事务,事务一阶段结束(TM 通知 TC 提交/回滚分布式事务); TC 汇总事务信息,决定分布式事务是提交还是回滚; TC 通知所有 RM 提交/回滚 资源,事务二阶段结束; AT模式 AT 模式是一种无侵入的分布式事务解决方案。在 AT 模式下,用户只需关注自己的“业务 SQL”,用户的 “业务 SQL” 作为一阶段,Seata

SQL Server2008从入门到精通pdf

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-22 10:38:08
下载地址: 网盘下载 内容介绍 编辑 《SQL Server 从入门到精通》从初学者的角度出发,通过通俗易懂的语言、丰富多彩的实例,详细地介绍了SQLServer2008开发应该掌握的各方面技术。全书共分15章,包括数据库基础、初识SQLServer2008、管理SQLServer2008、创建与管理数据库、操作数据表与视图、维护SQLServer2008、T—SQL概述、SQL数据语言操作、SQL数据查询、存储过程和触发器、索引与数据完整性、游标的使用、SQL函数的使用、SQL中的事务、基于C#的企业ERP管理系统。书中所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的注释,可以使读者轻松领会SQLServer2008的精髓,快速提高开发技能。   第1篇 基 础 知 识   第1章 数据库基础 3   视频讲解:25分钟   1.1 数据库系统简介 4   1.1.1 数据库技术的发展 4   1.1.2 数据库系统的组成 4   1.2 数据库的体系结构 5   1.2.1 数据库三级模式结构 5   1.2.2 三级模式之间的映射 5   1.3 数据模型 6   1.3.1 数据模型的概念 6   1.3.2 常见的数据模型 6   1.3.3 关系数据库的规范化 7   1.3.4 关系数据库的设计原则 7   1.3.5 实体与关系 8   1.4

ZooKeeper理论基础

笑着哭i 提交于 2020-01-22 04:05:31
ZooKeeper理论基础 1 ZooKeeper简介 2 一致性 2.1 顺序一致性 2.2 原子性 2.3 单一视图 2.4 可靠性 2.5 最终一致性 3 ZAB协议 3.1 ZAB协议简介 3.2 ZAB与Paxos的关系 3.3 三类角色 3.4 三个数据 3.5 三种模式 3.6 四种状态 3.7 同步模式与广播模式 (1) 初始化广播 (2) 消息广播算法 (3) Observer的数据问题 3.8 恢复模式的三原则 (1) Leader的主动出让原则 (2) 已被处理过的消息不能丢原则 (3) 被丢弃的消息不能再现原则 3.9 Leader选举 (1) Leader选举中的基本概念 A. myid B.逻辑时钟 (2)Leader选举算法 A.集群启动中的Leader选举 B.宕机后的eader选举 4.高可用集群容灾 4.1 服务器数量的奇数与偶数 4.2 容灾设计方案 (1) 三机房部署 (2) 双机房部署 5.CAP定理 5.1 简介 5.2 BASE理论 (1) 基本可用 (2) 软状态 (3) 最终一致性 5.3 ZK与CP 6.zk可能会存在脑裂 1 ZooKeeper简介 ZooKeeper由雅虎研究院开发,后来捐赠给了Apache。ZooKeeper是一个开源得分布式应用程序协调服务器,其为分布式系统提供 一致性 服务

springboot集成分布式事务seata-1.0.0的AT模式(nacos作为注册中心以及配置中心)

你离开我真会死。 提交于 2020-01-22 02:12:39
Seata 是什么? Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前,Seata 对应的内部版本在阿里经济体内部一直扮演着分布式一致性中间件的角色,帮助经济体平稳的度过历年的双11,对各BU业务进行了有力的支撑。经过多年沉淀与积累,商业化产品先后在阿里云、金融云进行售卖。2019.1 为了打造更加完善的技术生态和普惠技术成果,Seata 正式宣布对外开源,未来 Seata 将以社区共建的形式帮助其技术更加可靠与完备。 seata的官方文档: http://seata.io/zh-cn/index.html seata github地址: https://github.com/seata/seata 设计初衷 对业务无侵入:即减少技术架构上的微服务化所带来的分布式事务问题对业务的侵入 高性能:减少分布式事务解决方案所带来的性能消耗 发展远景 架构 TC - 事务协调者 维护全局和分支事务的状态,驱动全局事务提交或回滚。 TM - 事务管理器 定义全局事务的范围:开始全局事务、提交或回滚全局事务。 RM - 资源管理器 管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。 微服务框架支持 目前已支持 Dubbo、Spring Cloud、Sofa-RPC

性能调优,程序员转型架构师的拦路虎【3】

丶灬走出姿态 提交于 2020-01-21 01:26:47
性能调优系列前序文章索引: 程序员必须掌握的性能调优 :老兵哥结合个人经历解释了程序员往架构师方向发展时为什么要跨越性能调优这一关,以及介绍了从 X、Y、Z 三个维度优化性能的思路。 从 X 维度优化系统的性能 :老兵哥分享了从 X 维度优化系统性能的思路,包括让客户端分计算存储任务、优化交互设计等,主要是作为引子拓宽我们性能调优的思路。 应用容器 Tomcat 性能调优 :Y 维度就是从业务 HTTP 请求的横向处理流程来看,HTTP 请求会穿越网络、计算机、应用容器(Tomcat)、Spring、ORM(Hibernate)、数据库等节点,在这个流程中每个节点都有许多可以可优化的地方,此文主要介绍通过优化应用容器(Tomcat)来优化系统性能的方法。 程序员在转型架构师的过程中需要建立流程化、结构化、系统化的思维方式,而性能调优是非常难得的契机,它既给了我们压力,也给了我们动力,跨越它就是突破自己的过程。建议在阅读本文内容前,先参考下面这个系列的文章了解 Web 应用是怎样处理 HTTP 请求的: 图解 Spring:HTTP 请求的处理流程与机制【1】 图解 Spring:HTTP 请求的处理流程与机制【2】 图解 Spring:HTTP 请求的处理流程与机制【3】 图解 Spring:HTTP 请求的处理流程与机制【4】 图解 Spring:HTTP 请求的处理流程与机制

Spring中的事务管理详解

£可爱£侵袭症+ 提交于 2020-01-21 01:19:18
在这里主要介绍Spring对事务管理的一些理论知识,实战方面参考上一篇博文: http://www.cnblogs.com/longshiyVip/p/5061547.html 1. 事务简介: 事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性 事务就是一系列的动作,它们被当作一个单独的工作单元。这些动作要么全部完成,要么全部不起作用 2. 事务的四个关键属性(ACID) ① 原子性(atomicity):事务是一个原子操作,有一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用 ② 一致性(consistency):一旦所有事务动作完成,事务就被提交。数据和资源就处于一种满足业务规则的一致性状态中 ③ 隔离性(isolation):可能有许多事务会同时处理相同的数据,因此每个事物都应该与其他事务隔离开来,防止数据损坏 ④ 持久性(durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响。通常情况下,事务的结果被写到持久化存储器中 3. Spring中的事务管理 作为企业级应用程序框架,Spring在不同的事务管理API之上定义了一个抽象层。而应用程序开发人员不必了解底层的事务管理API,就可以使用Spring的事务管理机制。 Spring既支持编程式事务管理(也称编码式事务),也支持声明式的事务管理

MySQL两种存储引擎: MyISAM和InnoDB 简单总结

我是研究僧i 提交于 2020-01-21 00:16:47
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却 有一个缺点:不支持事务处理(transaction) 。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参考完整性与并发违规处理机制,后来就逐渐取代MyISAM。 InnoDB,是MySQL的数据库引擎之一,为MySQL AB发布binary的标准之一。InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能,类似于PostgreSQL。目前InnoDB采用双轨制授权,一是GPL授权,另一是专有软件授权。 MyISAM和InnoDB两者之间有着明显区别,简单梳理如下: 1) 事务支持 MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条SQL语句显示放在begin和commit之间,组成一个事务去提交。 MyISAM是非事务安全型的,而InnoDB是事务安全型的,默认开启自动提交,宜合并事务,一同提交

MySQL事务的实现原理

[亡魂溺海] 提交于 2020-01-17 21:38:58
特点 原子性(Atomicity),一致性(Consistency),隔离型(Isolation)以及持久性(Durability) 一、事务的目的 1、可靠性和并发处理 可靠性:数据库要保证当insert或update操作时抛异常或者数据库crash的时候需要保障数据的操作前后的一致,想要做到这个,我需要知道我修改之前和修改之后的状态,所以就有了undo log和redo log。 并发处理:也就是说当多个并发请求过来,并且其中有一个请求是对数据修改操作的时候会有影响,为了避免读到脏数据,所以需要对事务之间的读写进行隔离,至于隔离到啥程度得看业务系统的场景了,实现这个就得用MySQL 的隔离级别。 二、实现事务功能的三个技术 1、日志文件(redo log 和 undo log) 2、锁技术 3、MVCC 1.1 redo log 与 undo log介绍 1.1.1redo log 什么是redo log ? redo log叫做重做日志,是用来实现事务的持久性。该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log),前者是在内存中,后者在磁盘中。 当事务提交之后会把所有修改信息都会存到该日志中。假设有个表叫做tb1(id,username) 现在要插入数据(3,ceshi) start transaction; select

MySQL数据库之--事物机制

假如想象 提交于 2020-01-17 21:30:30
事物机制 5.0版本后出现的,解决: 避免写入直接操作数据文件,直接操作数据文件是很危险的事 MySQL有5种日志文件,其中只有redo日志和undo日志与事物有关 RDBMS=SQL语句 + 事务(ACID) 原子性 事务是一个或者多个SQL语句组成的整体,要么全部执行成功,要么全都执行失败 ,事务执行之后,不允许停留在中间某个状态 把10部门中MANGER员工调往20部门,其他岗位员工调往30部门,然后删除10部门 事务: 开启事务 UPDATE语句 DELETE语句 提交事务 默认情况下,MySQL执行每条SQL语句都会自动开启和提交事务 为了让多条SQL语句纳入一个事务下,可以手动管理事务 START TRANSACTION; SQL语句 [COMMIT | ROLLBACK]; COMMIT:持久化提交 ROLLBACK:回滚 START TRANSACTION; -- 启动事务机制 delete from t_emp; delete from t_dept; SELECT * FROM t_emp; SELECT * FROM t_dept; -- COMMIT; -- 提交同步(给注释掉了) ROLLBACK ; -- 回滚不同步 事务的一致性 不管在任何给定的时间\并发事务有多少, 事务必须保证运行结果的一致性,不允许数据歧义 隔离性