Mybatis 3.3.0 中文用户指南SqlSessionFactory SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由对它进行清除或重建。使用 SqlSessionFactory 的 最佳实践是在应用运行期间不要重复创建多次,多次重建 SqlSessionFactory 被视为一种代码“坏味道(bad smell)”。因此 SqlSessionFactory 的最佳范围是应用范围。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。 true | false False localCacheScope MyBatis 利用本地 缓存机制(Local Cache)防止循环 引用(circular references)和加 速重复嵌套查询。 默认值为 SESSION,这种情 况下会缓存一个会 话中执行的所有查 询。 若设置值为 STATEMENT,本 地会话仅用在语句 执行上,对相同 SESSION | STATEMENT @Alias("author") public class Author { ... } 已经为许多常见的 Java 类型内建了相应的类型别名。它们都是大小写不敏感的,需要注意的是由基本类型名称重复导致的特殊处理。 别名 别名 映射的类型 映射的类型 _byte byte _long long _short short _int int _integer int _double double0 码力 | 98 页 | 2.03 MB | 1 年前3
Apache ShardingSphere 中文文档 5.2.0Java API 和 SQL 注释两种方式使用。详情请参 见强制分片路由。 行表达式 行表达式是为了解决配置的简化与一体化这两个主要问题。在繁琐的数据分片规则配置中,随着数据节 点的增多,大量的重复配置使得配置本身不易被维护。通过行表达式可以有效地简化数据节点配置工作 量。 对于常见的分片算法,使用 Java 代码实现并不有助于配置的统一管理。通过行表达式书写分片算法,可 以有效地将规则配置一同存放,更加易于浏览与存储。 局唯一主键是非常棘手 的问题。同一个逻辑表内的不同实际表之间的自增键由于无法互相感知而产生重复主键。虽然可通过约 束自增主键初始值和步长的方式避免碰撞,但需引入额外的运维规则,使解决方案缺乏完整性和可扩展 性。 目前有许多第三方解决方案可以完美解决这个问题,如 UUID 等依靠特定算法自生成不重复键,或者通过 引入主键生成服务等。为了方便用户使用、满足不同用户不同使用场景的需求,Apache 快照进行事务回滚; • 支持服务宕机后的,自动恢复提交中的事务。 不支持项 • 不支持除 RC 之外的隔离级别。 待优化项 • Apache ShardingSphere 和 SEATA 重复 SQL 解析。 3.2.9 附录 不支持的 SQL: • 事务中使用 DistSQL 里的 RAL、RDL 操作; • XA 事务中使用 DDL 语句。 3.3 读写分离 3.3.1 背景0 码力 | 449 页 | 5.85 MB | 1 年前3
Apache ShardingSphere 中文文档 5.0.0-alpha两种策略的 API 完全相同。 自增主键生成策略 通过在客户端生成自增主键替换以数据库原生自增主键的方式,做到分布式主键无重复。 行表达式 实现动机 配置的简化与一体化是行表达式所希望解决的两个主要问题。 在繁琐的数据分片规则配置中,随着数据节点的增多,大量的重复配置使得配置本身不易被维护。通过 行表达式可以有效地简化数据节点配置工作量。 对于常见的分片算法,使用 Java 代码实现 局唯一主键是非常棘手 的问题。同一个逻辑表内的不同实际表之间的自增键由于无法互相感知而产生重复主键。虽然可通过约 束自增主键初始值和步长的方式避免碰撞,但需引入额外的运维规则,使解决方案缺乏完整性和可扩展 性。 目前有许多第三方解决方案可以完美解决这个问题,如 UUID 等依靠特定算法自生成不重复键,或者通过 引入主键生成服务等。为了方便用户使用、满足不同用户不同使用场景的需求,Apache 花算法(snowflake)生成 64bit 的长整 型数据。 雪花算法是由 Twitter 公布的分布式主键生成算法,它能够保证不同进程主键的不重复性,以及相同进程 主键的有序性。 实现原理 在同一个进程中,它首先是通过时间位保证不重复,如果时间相同则是通过序列位保证。同时由于时间 位是单调递增的,且各个服务器如果大体做了时间同步,那么生成的主键在分布式环境可以认为是总体 有序的,0 码力 | 301 页 | 3.44 MB | 1 年前3
传智播客 mybatis 框架课程讲义SqlSessionFactory 是 一 个 接 口 , 接 口 中 定 义 了 openSession 的 不 同 重 载 方 法 , SqlSessionFactory 的最佳使用范围是整个应用运行期间,一旦创建后可以重复使用,通常以 单例模式管理 SqlSessionFactory。 2.2.3 SqlSession SqlSession 是一个面向用户的接口, sqlSession 中定义了数据库操作,默认使用 sqlSession.commit(); } finally{ session.close(); } } } 2.3.3 问题 原始 Dao 开发中存在以下问题: Dao 方法体存在重复代码:通过 SqlSessionFactory 创建 SqlSession,调用 SqlSession 的数 据库操作方法 调用 sqlSession 的数据库操作方法需要指定 statement Listlist = userMapper.selectUserByArray(userlist); //关闭session session.close(); } 4.4.4 Sql 片段 Sql 中可将重复的 sql 提取出来,使用时用 include 引用即可,最终达到 sql 重用的目的,如 下:
共 13 条
- 1
- 2













