transactionManager 以及datasource type解析

transactionManager

在 MyBatis 中有两种事务管理器类型(也就是 type=”[JDBC|MANAGED]”):

  • JDBC – 这个配置直接简单使用了 JDBC 的提交和回滚设置。 它依赖于从数据源得 到的连接来管理事务范围。
  • MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让 容器来管理事务的整个生命周期(比如 Spring 或 JEE 应用服务器的上下文) 默认 情况下它会关闭连接。 然而一些容器并不希望这样, 因此如果你需要从连接中停止 它,将 closeConnection 属性设置为 false。例如:
    <transactionManager type="MANAGED"> <property name="closeConnection" value="false"/> </transactionManager>

NOTE If you are planning to use MyBatis with Spring there is no need to configure any TransactionManager because the Spring module will set its own one overriding any previously set configuration.

这两种事务管理器都不需要任何属性。然而它们都是类型别名,要替换使用它们,你需 要放置将你自己的类的完全限定名或类型别名,它们引用了你对 TransactionFactory 接口的实现 类。

public interface TransactionFactory { void setProperties(Properties props); Transaction newTransaction(Connection conn); Transaction newTransaction(DataSource dataSource, TransactionIsolationLevel level, boolean autoCommit); }

任何在 XML 中配置的属性在实例化之后将会被传递给 setProperties()方法。 你的实现类 需要创建一个事务接口的实现,这个接口也很简单:

public interface Transaction { Connection getConnection() throws SQLException; void commit() throws SQLException; void rollback() throws SQLException; void close() throws SQLException; }

使用这两个接口,你可以完全自定义 MyBatis 对事务的处理。

dataSource

dataSource 元素使用基本的 JDBC 数据源接口来配置 JDBC 连接对象的资源。

  • 许多 MyBatis 的应用程序将会按示例中的例子来配置数据源。 然而它并不是必须的。 要知道为了方便使用延迟加载,数据源才是必须的。

有三种内建的数据源类型(也就是 type=”???”):

UNPOOLED – 这个数据源的实现是每次被请求时简单打开和关闭连接。它有一点慢, 这是对简单应用程序的一个很好的选择, 因为它不需要及时的可用连接。 不同的数据库对这 个的表现也是不一样的, 所以对某些数据库来说配置数据源并不重要, 这个配置也是闲置的。 UNPOOLED 类型的数据源仅仅用来配置以下 5 种属性:

  • driver – 这是 JDBC 驱动的 Java 类的完全限定名(如果你的驱动包含,它也不是 数据源类)。
  • url – 这是数据库的 JDBC URL 地址。
  • username – 登录数据库的用户名。
  • password – 登录数据库的密码。
  • defaultTransactionIsolationLevel – 默认的连接事务隔离级别。

作为可选项,你可以传递数据库驱动的属性。要这样做,属性的前缀是以“driver.”开 头的,例如:

  • driver.encoding=UTF8

这 样 就 会 传 递 以 值 “ UTF8 ” 来 传 递 属 性 “ encoding ”, 它 是 通 过 DriverManager.getConnection(url,driverProperties)方法传递给数据库驱动。

POOLED – 这是 JDBC 连接对象的数据源连接池的实现,用来避免创建新的连接实例 时必要的初始连接和认证时间。这是一种当前 Web 应用程序用来快速响应请求很流行的方 法。

除了上述(UNPOOLED)的属性之外,还有很多属性可以用来配置 POOLED 数据源:

  • poolMaximumActiveConnections – 在任意时间存在的活动(也就是正在使用)连 接的数量。默认值:10
  • poolMaximumIdleConnections – 任意时间存在的空闲连接数。
  • poolMaximumCheckoutTime – 在被强制返回之前,池中连接被检查的时间。默认 值:20000 毫秒(也就是 20 秒)
  • poolTimeToWait – 这是给连接池一个打印日志状态机会的低层次设置,还有重新 尝试获得连接, 这些情况下往往需要很长时间 为了避免连接池没有配置时静默失 败)。默认值:20000 毫秒(也就是 20 秒)
  • poolPingQuery – 发送到数据的侦测查询,用来验证连接是否正常工作,并且准备 接受请求。默认是“NO PING QUERY SET” ,这会引起许多数据库驱动连接由一 个错误信息而导致失败。
  • poolPingEnabled – 这是开启或禁用侦测查询。如果开启,你必须用一个合法的 SQL 语句(最好是很快速的)设置 poolPingQuery 属性。默认值:false。
  • poolPingConnectionsNotUsedFor – 这是用来配置 poolPingQuery 多次时间被用一次。 这可以被设置匹配标准的数据库连接超时时间, 来避免不必要的侦测。 默认值: 0(也就是所有连接每一时刻都被侦测-但仅仅当 poolPingEnabled 为 true 时适用)。

JNDI – 这个数据源的实现是为了使用如 Spring 或应用服务器这类的容器, 容器可以集 中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。这个数据源配置只需要两个属 性:

  • initial_context – 这 个 属 性 用 来 从 初 始 上 下 文 中 寻 找 环 境 ( 也 就 是 initialContext.lookup(initial——context) 。这是个可选属性,如果被忽略,那么 data_source 属性将会直接以 initialContext 为背景再次寻找。
  • data_source – 这是引用数据源实例位置的上下文的路径。它会以由 initial_context 查询返回的环境为背景来查找,如果 initial_context 没有返回结果时,直接以初始 上下文为环境来查找。

和其他数据源配置相似, 它也可以通过名为 “env.” 的前缀直接向初始上下文发送属性。 比如:

  • env.encoding=UTF8

在初始化之后,这就会以值“UTF8”向初始上下文的构造方法传递名为“encoding” 的属性。

转载于:https://www.cnblogs.com/ainiaiwo/p/5885855.html

transactionManager 以及datasource type解析相关推荐

  1. 手敲Mybatis(三)-DataSource的解析创建和使用

    本章节主要是解决通过xml配置可处理sql语句,所以最主要的就是解析xml,一个解析并放入对应数据源对象DataSourceFactory和事务对象TransactionFactory,一个处理Sql ...

  2. QML文档阅读笔记-easing.type解析与实例

    easing.type 指定动态缓和曲线 官方给出的伪代码: PropertyAnimation { properties: "y";easing.type: Easing.InO ...

  3. Qt文档阅读笔记-GridLayout QML Type解析与实例

    目录 基本概念 代码与实例 基本概念 如果QGridLaout大小被调整,所有item的布局都将会重新排列.和widget的QGridLayout一样.如果想要一行或一列的布局可以使用RowLayou ...

  4. android 绘画开源,Android 开源可缩放平移的绘画板

    ScaleSketchPadDemo 此项目包含两个模块 app1 为普通绘画板 app2 为可所发的绘画板 方便各位Android 开发者理解和使用 用法: clone or download 项目 ...

  5. mybatis3 配置文件解析

    mybatis3 配置文件解析 2013-05-08 19:43 34388人阅读 评论(0) 收藏 举报 分类: mybatis3(19) 目录(?)[+] 配置文件的基本结构 configurat ...

  6. MyBatis——XML配置解析

    目录 1. 环境配置(environments) 2. 属性(properties) 3. 类型别名(typeAliases) 方式一:通过typeAlias起别名 方式二:通过package起别名 ...

  7. SSM之Mybatis框架

    最近在学SSM框架,现在来简单介绍一下,SSM里的mybatis框架. 首先来介绍一下ORM 1.ORM简介 Object Relational Mapping:对象关系映射. 简单的理解:ORM是通 ...

  8. Spring学习笔记之MyBatis

    系列文章目录 Spring学习笔记 之 Springhttps://blog.csdn.net/weixin_43985478/article/details/124411746?spm=1001.2 ...

  9. mybatis快速入门

    1.Mybatis MyBatis 原本是apache的一个开源项目iBatis,2010年这个项目由Apache Software Foundation迁移到了Google Code,并且改名为My ...

最新文章

  1. BZOJ 2724蒲公英 (分块) 【内有块大小证明】
  2. 优化 bulk insert
  3. 关于SAP Spartacus ManageUnitsListComponent的一些试错
  4. css3 pointer-events:none 允许点击穿透
  5. 补习系列(10)-springboot 之配置读取
  6. 20200320:反转字符串中的元音字母(leetcode345)
  7. bzoj4974 字符串大师
  8. [转]VS2008 集成openCV过程
  9. UVa 621 - Secret Research
  10. 详细解读用C语言编写的 “扫雷”程序
  11. Laravel Pipeline解读
  12. VBScript 程序员参考手册 读书笔记08-
  13. 跟“杀熟”说再见 在熊拍拍只有双赢
  14. matlab横纵坐标程序,matlab横纵坐标标注
  15. 计算机毕设(附源码)JAVA-SSM基于java学科竞赛管理系统
  16. windows embed sapi php,19.1 嵌入式SAPI
  17. 多平台epub阅读器分享
  18. 移动云瞄准“一流云商”焕新出发
  19. 好看更好玩的vivo S12 Pro,越用越顺手
  20. [python]pip freeze和pipreqs的区别和使用方法

热门文章

  1. NoSQL介绍(七)
  2. OCF 试图为物联网建立标准,但它面临着不小的挑战
  3. openstack 手动安装版 功能测试
  4. spring mvc Spring Data Redis RedisTemplate [转]
  5. oracle技术之Oracle 物化视图(一)
  6. 我对windows核心编程的理解之一
  7. MS SQL入门基础:更改数据库
  8. alsa的动态库安装在哪里_linux 给运行程序指定动态库路径
  9. python 复数幂_python基础学习——运算符(1)
  10. 开源管理项目管理_避免开源项目管理中的不良做法