Mybatis链接池提供了三种配置方式,配置的位置在SqlMapConfig.xml
的dataSource
标签中,其type属性就是配置链接池的种类。type的可取值java
1.POOLED:数据库
利用“池”的概念将JDBC链接对象组织起来,避免了建立新的链接实例时所需的时间。这样使得应用的 响应速度更加快。安全
POOLED的配置属性: poolMaximumActiveConnections:任意时间能够存在的活动链接数量,默认值是10. poolMaximummldleConnections: 任意时间可能存在的空闲链接数 poolMaximumCheckoutTime: 在被强制返回以前,池中链接被检出时间,默认是20000ms. poolTimeToWait: 若是获取链接花费的时间较长,他会给链接池打印状态日志并从新获取链接,避免在链接失败的时候一直等待,默认时间20000ms.
2.UNPOOLED:服务器
这个数据源的实现只是每次被请求的时候打开和关闭链接,对没有性能要求的简单应用程序是能够的。mybatis
UPOOLED的配置属性: driver: jdbc驱动的java类彻底限定名。、 url:数据库的JDBC URL地址。 username:数据库的登陆名。 password:数据库的密码。 defaultTransactionLevel:默认链接事务隔离级别。
3.JNDI:并发
这个数据源的实现是为了能在EJB或应用服务器这类容器中使用,容器能够集中在或在外部配置数据源, 而后放在一个JNDI上下文的引用。性能
inital_context: 这个属性是在InitalContext中寻找上下文。 data_source: 这个引用数据源实例位置的上下文路径。
事务就是对数据访问,修改,提交等一系列被绑定成一个总体的操做,事务是一个最小的执行单元,不能被分开,要么同时完成,要么同时失败。url
1.原子性(Atomicity):事务是应用中最小的执行单元,不可被分割。日志
2.一致性(Consistency): 事务的执行结果,必须使数据库从一种一致性状态变到另外一种一致性状态。code
3.隔离性(Isolation):各个事务的执行互不干扰,任意事务的内部操做对其余并发的事务都是隔离的。
4.持续性(Durability):又叫持久性,即事务一旦提交,对数据的任何修改都会被保存到数据库。
事务隔离级别 | 脏读 | 不可重复读 | 幻读 | 解释 |
---|---|---|---|---|
读未提交(read-uncommitted) | 是 | 是 | 是 | 能够读到未提交的事物 |
不可重复读(read-committed) | 否 | 是 | 是 | 只能读提交的事物 |
可重复读(repeatable-read) | 否 | 否 | 是 | 事务提交先后都能读【MySql默认】 |
串行化(serializable) | 否 | 否 | 否 | serializable时会锁表,是最安全的,也是平常开发基本不会用 |
1.脏读:事务A读取了事务B更新的数据,而后B回滚操做,那么A读取到的数据是脏数据
2.不可重复读:事务 A 屡次读取同一数据,事务 B 在事务A屡次读取的过程当中,对数据做了更新并提交,致使事务A屡次读取同一数据时,结果 不一致
3.幻读:系统管理员A将数据库中全部学生的成绩从具体分数改成ABCDE等级,可是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉同样,这就叫幻读。