Spring的入门案例5
1.ThreadLocal介绍:
ThreadLocal介绍:
2.Spring整合JDBC
1.JDBC回顾:
1.导入jar包
2.配置数据库连接
3.获取数据源
2.整合JDBC
1.添加jar包
2.编译配置文件
3.jdbc写法
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring
jdbc.user=root
jdbc.password=root
3.SpringJDBC调用:
4.Spring的JDBC模板类
1.移入模板类
2.使用模板
5.通过模板对象实现自动转化
1.实现接口
2.测试方法
6.自动生成转化模板
说明:
如果追求效率 ,使用手动映射,如果追求简单,使用自动映射
7.声明式事务处理
该方法时spring采用AOP的设计模式,自动进行的事务代码的封装,如果程序中,使用声明式事务处理,从此程序员,无需关注事务控制。
1.配置头标签:
2.配置事务管理器
3.配置事务通知
4.配置事务切面
8.readOnly的作用
如果在声明式事务处理中,配置了read-only则不允许,除增删改查,之外的数据操作数据库。否则违反spring的规定报错。
9.Spring的事务策略
1.异常的分类
1.编译异常(检查异常)
编辑代码时,会明确的告知可能会有错误,让程序自己处理
2.运行时异常
空指针异常、数组下标越界、类转化异常、算数异常
2.说明:
声明式事务处理规则,如果程序执行中有运行时异常,则实现事务的回滚,如果程序执行中遇到编译异常。则直接放行,不予回滚。
3.修改默认的事务策略
rollback-for="java.sql.SQLException"
指定异常类型进行回滚
no-rollback-for="java.lang.RuntimeException"
指定类型不回滚
10.多表同时操作的注意事项
1.新增user表
2.新增person表
问题:
如何控制多表 同时插入??
如果插入操作时报错了,2条数据都应该回滚。
错误分析:
该代码中通过2个Serivce调用,不能保证事务的一致性
分析:
如果同时做新增操作,应该在service层中添加,因为只有serivce才能保证事务的一致性。
说明:
web:
只负责数据的封装,数据的传递,转发和重定向
Service:
只处理业务逻辑
Dao:
只处理sql语句
11.缓存处理:
缓存的作用:
能将一些常用的数据加入到缓存中,之后用户再次获取数据时,不用连接数据库,可以从缓冲中获取数据,提高程序执行效率
调用过程:
1.当用户第一次请求数据时,先通过服务器,调用数据库获取数据。之后将数据存入缓存中,进行保存。
2.当用户再次请求数据时,先从缓存中获取数据,如果缓存中有该数据则直接返回,如果缓存中没有该数据,则连接数据库再次查询。
题目:
要求:当用户根据Id查询数据时,使用缓存操作。
分析:
1.采用AOP的思想编辑
2.环绕通知
3.缓存使用Map<key,value>
补充:
在测试类中添加@Before表示,在每次执行@Test方法之前都会执行before下的方法。