mybatis AOP注解、jdbc模板、事务

电脑杂谈  发布时间:2018-02-20 07:10:26  来源:网络整理

mybatis中#和$的区别_mybatis_hibernate和mybatis

aop联盟包、 aspectJ实现包 、 spring-aop-xxx.jar 、 spring-aspect-xxx.jar

导入约束

aop约束

托管扩展类和被扩展类

也可以使用注解来托管这两个类 。  @Component

在扩展出来的功能类身上和方法上打注解

为什么spring也要提供jdbc模板呢?

spring是属于service层的框架, 它所处的位置比较尴尬,并且它想让自己更受程序员的喜爱。 除了能够做好自己的核心 IOC & AOP , 它还对前后两个框架都提供了支持。 spring其实对dao层的大部分技术有提供模板支持 。

insert

delete

udpate

findCount

findObject

findList

查询要求我们手动封装class MyRowMapper implements RowMapper<User>{

该小节演练的是三层结构的所有属性注入写法。(不写action | servlet)

以下代码其实是位于dao层的

这套代码很多,而且它只是一个dao的操作代码而已。 如果我们还有别的dao方法。也要执行操作,那么必然也得写出来这样的代码。 那么就存在冗余代码了。

解决方案:

以前的解决方法:

mybatis_hibernate和mybatis_mybatis中#和$的区别

?? 工具类 | 静态代码块

现在学了spring了,我想用spring的手法来简化dao的这一套代码。

??分析以上代码,其实它就是做了两个工作。

??a. 创建了jdbc模板的对象,并且完成了属性的赋值工作。

??b. 创建了dataSource 的对象,并且完成了属性的赋值工作。mybatis

spring也可以完成这个工作, 创建对象,其实就是`IOC`的体现, 对属性的赋值工作其实就是`DI`的体现

service

dao

xml

导入jar包

c3p0-0.9.5.2.jarmchange-commons-java-0.2.12.jar

在xml中配置

为了方便修改连接信息,通常在src下使用properties文件来记录他们。主要是方便修改

在src下新建一个properties文件,内容如下 名:jdbc.properties

在xml里面导入jdbc.properties ,并且在dataSource里面引用

什么事务,事务有什么用?

事务是用于包装一组操作的。当这一组操作里面的所有步骤都执行成功,那么这一组操作就算成功(事务的提交),如果有哪一个步骤执行失败,那么这一组操作就以失败告终。(事务的回顾)

事务的特性

原子性、一致性 、隔离性、持久性

如果不考虑隔离级别,那么事务并发会出现以下问题

读的问题

?? 脏读 : 读到了另一个事务还没有提交的数据

hibernate和mybatis_mybatis_mybatis中#和$的区别

?? 不可重复读 : 读到了另一个事务已经提交的数据 (针对的是update的数据)

?? 虚读| 幻读 : 读到了另一个事务已经提交的数据(针对的是insert的数据)

解决方案: 设置隔离级别

?? 读未提交

?? 读已提交 Oracle

?? 可重复读 MySql

?? 序列化|串行化

写的问题

?? 丢失更新: 最后操作的事务,不管是提交还是回滚,都会让前一个是的数据丢失掉。

解决方案:

?? 悲观锁 : 还没开始就认为一定会丢失更新。mybatis

?? 每一个事务在执行操作之前,先进行一次查询。 并且查询的语句里面带有关键字 for update

?? 乐观锁 : 认为不会出现丢失更新,

?? 要求程序员手动控制,给表额外添加一个字段 如: version。

事务应该写在哪一层? 为什么spring也要插手管理事务?


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-86071-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...