Spring 5.x的启示
- Spring boot 和 Spring cloud出现时必然的。
- 易用性,生态性良好,运维遍历,云趋势,最佳实践的整合。
Spring 与JDBC
spring boot 的配置
DataSourceAutoConfiguration --配置DataSource DataSourceTransactionManagerAutoConfiguration --配置DataSourceTransactionManager JDBCTemaplateAutoConfiguration --配置JDBCTemaplate
数据源相关配置
多数据源环境配置
数据源进行区分,避免错误,关注每次使用的数据源(有多个DataSource时系统如何判断,对应的设施事务,Orm,如何选择DataSource)
- 配置方法
- 手工控制
- 与spring boot 协同控制
- 配置@Primark类型的Bean
- 排除Spring Boot 的自动配置
(DataSourceAutoConfiguration,DataSourceTransactionAutoConfiguration,JdbcTemplateAutoConfiguration)
优秀的连接池
HikariCP
快速原因: 1. 字节码级别的优化(很多方法通过Java Assit生成) 2. 大量小改进 (使用FastStatementList代替ArrayList,无锁集合ConcurrengBag,代理类的优化) 使用: Spring Boot 2.X 默认使用HikariCp,配置spring.dataSource.hikari.*即可 Spring Boot 1.x 默认使用 Tomcat连接池,需要移除tomcat-jdbc依赖;spring.dataSource.type=com.zaxxer.hikari.HikariDataSource
常见配置
Druid
Drui连接池是Al开源的数据库连接池项目,为监控而生,内置强大的监控功能,监控不影响性能,能防止sql注入,内置Loggin能诊断Hack应用行为。
- 实用功能 详细的监控 ExceptionSorter针对主流数据库的返回码都支持 SQL防注入 内置加密配置 众多扩展点,方便进行定制 网址:https://github.com.alibaba/druid
使用
- 直接配置 DruidDataSource
- 通过druid-spring-boot-starter
Druid Filter
用于定制连接池操作的各种环节 可以继承FilterEventAdapter以方便实现Filter 修改META-INF/druid-filter.properties增加Filter配置 排除引用默认的数据源的引用
如何选择连接池
可靠性,可扩展性,可运维性,性能,功能,其他等
Spring的JDBC操作类
spring-jdbc
- core ,Jdbc Template 等相关的核心接口类
- datasource,数据源相关的辅助类
- object,将JDBC操作封装成对象
- support,错误码及其他辅助工具
常用Bean注解
@Component @Repository @Service @Controller @RestController
JdbcTemplate
query queryForObject queryForList update execute
查询对象的映射
sql批处理 JDBCTemplate
- batchUpdate - BatchPreparedStatementSetter NamedParameterJdbcTemplate
- batchUpdate - SqlParameterSourceUtils.createBatch