《玩转SpringBoot全家桶》总结——第8-14节

第八节:好用的连接池——Alibaba Druid

通常在建立数据库连接的时候回耗费资源,而一个数据库能够同时建立连接的连接数是有限的,而在大型项目中,通常会有大量的数据库请求,如果Web应用为每一个请求都分配一个数据库连接,那么将导致性能的急剧下降。
数据库连接池的意义在于,能够重复利用数据库连接(有点类似线程池的部分意义),提高对请求的响应时间和服务器的性能。
连接池中提前预先建立了多个数据库连接对象,然后将连接对象保存到连接池中,当客户请求到来时,直接从池中取出一个连接对象为客户服务,当请求完成之后,客户程序调用close()方法,将连接对象放回池中。
Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Logging能诊断Hack应用行为。ExceptionSorter,针对主流的数据库的返回码都有支持。拥有众多的扩展点,方便进行定制。

第九节:通过Spring-JDBC访问数据库

Spring-jdbc组成:

  1. core,JdbcTemplate等核心接口和类
  2. DataSource,数据源相关的辅助类
  3. Object,将基本的JDBC操作封装成对象
  4. Support,错误码等其他辅助工具
    JdbcTemplate提供的简单的JDBC操作包括:query,queryForObject,queryForList,update,execute。
    使用@Repository注解,并注入JdbTemplate。
    获取数据例子:列表查询
    List list = jdbcTemplate.queryForLisr(”SELECT BAR FROM FOO”,String.class);
    转换成对象:
    List fooList = jdbcTemplate.query(“SELECT * FROM FOO”, new RowMapper(){
    @override
    public Foo mapRow(ResultSet rs, int rowNum) throws SQLException{
    return Foo.builder()
    .id(rs.getLong(1))
    .bar(rs.getString(2))
    .build();
    }
    };
    SQL批处理操作:
    public void batchInsert(){
    jdbcTemplate.batchUpdate(“INSERT INTO FOO (BAR) VALUES(?)”,
    new BatchPreparedStatementSetter(){
    @override
    pulic void setValues(PrepareStatement ps ,int i) throws SQLException{
    ps.setString(1, “b-”+1);
    }
    @override
    public int getBatchSize(){return 2;}
    });
    }
第十、十一节Spring的事务抽象

事务抽象的核心接口:
DataSourceTransactionManager、HibernateTransaction、JtaTransactionManager。
TransactionDefinition定义事务的传播性:
Isolation(事务的隔离级别)
Propagation Behavior(传播行为)
Timeout(超时时间)
Read-only status(只读状态)
传播特性:
《玩转SpringBoot全家桶》总结——第8-14节_第1张图片

事务隔离特性:
《玩转SpringBoot全家桶》总结——第8-14节_第2张图片

编程式事务:
TransactionTemplate:有返回值的就是用TransactionCallback;没有返回值的就用TransactionCallbackWithoutResult。也可以在里边设置事务的传播特性、隔离级别等等。
声明式事务:
《玩转SpringBoot全家桶》总结——第8-14节_第3张图片

基于注解的配置方式:
开启事务注解方式支持:@EnableTransactionManagement

第十二节:了解Spring的JDBC异常抽象

《玩转SpringBoot全家桶》总结——第8-14节_第4张图片

Spring是通过SQLErrorCodeSQLExceptionTranslator解析错误码,定义各个数据库的ErrorCode。通常在org/springframework/jdbc/support/sql-error-codes.xml中配置。
第十三十四节:
定义相关注解:

  1. @@Component/@Repository/@Serbice
  2. @Controller/@RESTController
  3. @RequestMapping
    注入相关注解
    @Autowired/@Qualifier/@Resource
    @Value

《玩转SpringBoot全家桶》总结——第8-14节_第5张图片

生产环境当中尽量少的发布Endpoint。

你可能感兴趣的:(学习总结,spring)