mybatis
会飞的大鱼吃小鱼
信息系统项目管理师,系统架构师,目前就职于某国企,负责后端架构设计及开发。曾就职于世界500强大型互联网公司,有5年大型互联网高并发电商系统开发、10年+后端开发架构经验,目前发表专利10余篇。
展开
-
数据库连接池和线程池比较
数据库连接池和线程池比较数据库连接池是为了复用数据库连接Connections,因为数据库连接的获取和销毁开销代价大;线程池是为了复用线程,因为线程上下文切换开销代价大;他们的核心思想都是对资源的复用。那他们之间有什么异同呢,我们用mybatis中的数据库连接池来和java线程池做对比。...原创 2020-09-19 00:19:14 · 824 阅读 · 0 评论 -
跨库事务管理器
跨库事务管理器本文介绍如何编写一个跨库的事务管理器,通过best effort 1pc模式在spring DataSourceTransactionManager的基础上改造出一个能够支持多数据源事务的事务管理器。一、多数据源配置+事务管理器配置<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http:原创 2020-09-16 23:01:54 · 413 阅读 · 2 评论 -
Best Efforts 1PC 跨库事务
Best Efforts 1PC 跨库事务一、背景介绍分布式事务主要解决两种事务问题,一个是跨库事务,另一个是跨服务事务;跨库是指在一个事务里面包含多个数据源的数据库操作。跨服务是一个事务中包行多个不同的应用系统的服务。best efforts 1pc 主要解决的是一个应用服务中跨多个数据源的数据一致性问题,不能解决跨服务的一致性问题。跨服务的数据一致性需要通过两阶段、三阶段或者其他分布式方案来保证。二、什么是Best Efforts 1PC模式首先事务的实现方式是通过动态代理的方式对原方法进行增强原创 2020-09-15 23:37:39 · 1315 阅读 · 0 评论 -
mybatis和spring jdbc持久层框架事务支持分析
mybatis和spring jdbc持久层框架事务支持分析 持久层框架中的事务支持指的是ORM框架如何支持数据库事务,我们先梳理出原生数据库事务操作的主线脉络,它是通过java.sql 包下的Connection接口中定义的几个关键方法来实现的,包括setAutoCommit、commit、rollback几个核心的方法;先通过设置setAutoCommit false来关闭自动提交,然后通过显式的调用commit方法来提交事务;同样Connection接口中也定义了设置事务隔离级别的方法。 底层原创 2020-09-07 23:47:40 · 215 阅读 · 0 评论 -
orm框架设计、分析与开发
orm框架设计、分析与开发前面写过几篇文章介绍和分析mybatis,今天拆解下要设计一个ORM框架涉及到哪些方面,如何用现有的一些已知工具像spring jdbc、freemarker等重新造一个ORM框架出来,整体的拆解结构如图所示。该ORM框架源码有兴趣的可以评论区留言备注下邮箱找我要下,因为是个人写的,所以不可能面面俱到,但是ORM框架基本的功能具备,使用也非常方便,会freemarker语法的话一看就会用,使用起来感觉应该比mybatis更容易。一、准备阶段准备阶段是指sql操作前,例如容原创 2020-09-06 22:14:23 · 422 阅读 · 0 评论 -
mybatis拦截器
mybatis拦截器一、拦截器介绍Mybatis拦截器设计的初衷就是为了供用户在某些时候可以实现自己的逻辑而不必去动Mybatis固有的逻辑。通过Mybatis拦截器我们可以拦截某些方法的调用,我们可以选择在这些被拦截的方法执行前后加上某些逻辑,也可以在执行这些被拦截的方法时执行自己的逻辑而不再执行被拦截的方法。所以Mybatis拦截器的使用范围是非常广泛的。使用介绍@Intercepts({ @Signature(type = Executor.class, method = "q原创 2020-09-01 22:36:26 · 2410 阅读 · 1 评论 -
mybatis数据库连接池介绍和源码剖析
mybatis数据库连接池分析介绍一、数据库连接池1、定义数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。 (百度百科)2、核心原理连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户原创 2020-08-28 00:42:59 · 764 阅读 · 0 评论 -
mybatis源码修改-实现数据源灵活切换
一、实现灵活切换数据源mybatis目前只支持单数据源配置,如果想要切换数据源的话不能够灵活的操作,因此想要修改mybatis源码已支持数据源灵活切换,最终使用方式如下,指定对应的数据源,mybatis自动支持去指定的数据源下面的数据库下查询,同时也支持不同的数据库连接池。1、使用实例private static void dbkeyTest() { long start = System.currentTimeMillis(); final SqlSession session =原创 2020-08-26 22:21:09 · 1108 阅读 · 0 评论 -
mybatis使用和分析
mybatis使用和分析mybatis和hibernate一样是一个ORM 框架,hibernate设计的时候为了简化sql编写的复杂程度开发了一套hql查询语言,但是实际上针对复杂的查询场景hql显得非常不灵活,并且问题定位也特别复杂。相比而言mybatis支持更加灵活的sql操作,同时也能够灵活的支持结果集的映射。 本文从mybatis使用出发简单的介绍了下mybatis的使用原理,介绍了mybatis的一级和二级缓存,后续将进一步更新mybatis池化数据源PooledDataSource的原理原创 2020-08-24 23:41:19 · 526 阅读 · 0 评论