JDBC Java

JDBC

一 JDBC简介 Java DataBase Connectivity Java语言连接数据库 官方(Sun公司)定义的一套操作所有关系型数据库的规则(接口) 各个数据库厂商去实现这套接口 提供数据库驱动JAR包 可以使用这套接口(JDBC)编程 真正执行的代码是驱动JAR包中的实现类 二 JDBC初体验 1. 新建一个Maven项目 pom.xml <...
阅读全文
Java事务解析(事务的基本操作+隔离的等级+事务的四大特性+事务的概念) Java

Java事务解析(事务的基本操作+隔离的等级+事务的四大特性+事务的概念)

Java事务解析(事务的基本操作+隔离的等级+事务的四大特性+事务的概念) 什么是事务? 如果一个包含多个步骤的业务操作,这些操作被事务管理,那么这些操作要么同时成功要么同时失败 事务的四大特性(必须记住): 持久性:当事务回滚或者提交之后,数据库会持久化数据 一致性:事务操作前后,数据的总量不变 原子性:是不可分割的最小单位,不可分割,要么同时成功要么同时失败,不可分割 ...
阅读全文
mybatis sqlsession与sqlsquery、transaction、connection Java

mybatis sqlsession与sqlsquery、transaction、connection

sqlsession和connection 一个sqlsession一般对应一个connection,并且mybatis默认每次获取session都会开启一个事务,且不自动提交事务。如果更新操作完成后不手动commit,则在连接断开时会将更新操作回滚,一个sqlSession(一个transaction)中可以多次commit,commit后cache和statement刷新(一般一个...
阅读全文
微服务中的分布式锁方案 软件架构

微服务中的分布式锁方案

最近在工作中碰到一个分布式锁问题,这个问题之前做项目的过程也搞过,不过没有深入整理,这个周末有时间刚好整理一把。 为什么需要分布式锁? 在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰进而保证一致性,这个时候,便需要使用到分布式锁。 常见的实现方案 基于数据库实现 数据表方案 最容...
阅读全文
自己亲手写一个SpringBoot的事物 Java

自己亲手写一个SpringBoot的事物

1. 概述 一直在用SpringBoot中的 @Transactional 来做事务管理,但是很少没想过SpringBoot是如何实现事务管理的,今天从源码入手,看看 @Transactional 是如何实现事务的,最后我们结合源码的理解,自己动手写一个类似的注解来实现事务管理,帮助我们加深理解。 阅读说明:本文假设你具备Java基础,同时对事务有基本的了解和使用。 2. 事务的相...
阅读全文
从零开始手写 mybatis(四)- mybatis 事务管理机制详解 Java

从零开始手写 mybatis(四)- mybatis 事务管理机制详解

前景回顾 第一节 从零开始手写 mybatis(一)MVP 版本 中我们实现了一个最基本的可以运行的 mybatis。 第二节 从零开始手写 mybatis(二)mybatis interceptor 插件机制详解 第三节 从零开始手写 mybatis(三)jdbc pool 从零实现数据库连接池 本节我们一起来学习一下 mybatis 中的事务管理。 ...
阅读全文
MySQL行锁、表锁、间隙锁详解 编程技术

MySQL行锁、表锁、间隙锁详解

前言 我们前几篇讲了索引是什么,如何使用 explain 分析索引使用情况,如何去优化索引,以及 show profiles 分析 SQL 语句执行资源消耗的学习。今天我们来讲讲 MySQL 的各种锁,这里存储引擎我们使用 InnoDB 准备工作 创建表 tb_innodb_lock drop table if exists test_innodb_...
阅读全文
集群多JVM分布式锁实现 Java

集群多JVM分布式锁实现

基于数据库表乐观锁 (基本废弃) 要实现分布式锁,最简单的⽅方式可能就是直接创建⼀一张锁表,然后通过操作该表中的数据来实现了了。 当我们要锁住某个⽅法或资源时,我们就在该表中增加一条记录,想要释放锁的时候就删除这条记录。 比如创建这样一张数据库表: CREATE TABLE `methodLock` ( `id` int(11) NOT NULL AUTO_INCREMENT C...
阅读全文
Loading...