Spring Boot数据访问

JDBC数据源配置

在Java程序中使用JDBC比较复杂,
需要7步才能完成数据库的操作:
①加载数据库驱动
②建立数据库连接
③创建数据库操作对象
④定义操作的SQL语句
⑤执行数据库操作
⑥获取并操作结果集
⑦关闭对象,回收资源

Spring Data

●Spring Data 是Spring技术家族中的- -个大家庭,包容多子项目对各种不同的数据源提供数据存取功能。
●在实践开发中应依据要存取的数据源类型,选择合适的Spr ing数据存取技术。

直接配置所需的Bean

纯Spring创建项目,加入依赖包
■数据源相关
DataSource (根据选择的连接池实现决定)
■事务相关(可选)
. Plat formTransactionManager
(DataSourceTransact ionManager)
. TransactionTemplate
●操作相关(可选)
. JdbcTemplate

Spring Boot做的配置

”DataSourceAutoConfiguration:
■配置DataSource
●DataSourceTransactionManagerAutoConf iguration
●配置DataSourceTransactionManager
. JdbcTemplateAutoConf iguration
.配置JdbcTemplate
符合条件时才进行按需配置

使用自定义数据源

数据源相关配置属性

■通用
●spring. datasource .url=jdbc :mysql://localhost/test?serverTimezone=UTC
■spring . datasource. use rname=dbuser
●spring . datasource. password=dbpass
●spring. datasource .driver-class -name=com. mysql.cj. jdbc.Driver (可选)
初始化内嵌数据库
●spring. datasource. initialization-mode=embeddedI alwaysI never
. spring. datasource . schema与spring . datasource . data确定初始化SQL文文件
●spring. datasource. platform=hsqldb| h2 | oracle| mysql | postgresql
(与前者对应)

两种好用的连接池: HikariCP和Alibaba druid
HikariCP

Alibaba druid 【示例: druid-demo】

Spring JDBC操作: JdbcTemplate

基本概念:
Spring在JDBC API基础. 上提供的简化持久化操作的组件
JDBC Template提供统- 的模板方法,在保留代码灵活性的基础上,尽量减少持久化代码

常用的Bean注解
■通过注解定义Bean
@Component:通用的Bean注解
@Repository:数据库操作的Bean注解
@Service:业务服务的Bean注解
■@Controller: spring-mvc的Controller注解
@RestController: RESTful Service的注解

JDBC Template -简单的JDBC操作【示例: druid-demo 】

事务管理:编程式事务和声明式事务
概念:事务是正确执行一系列的操作(或动作), 使得数据库从一
种状态转换成另-种状态,且保证操作全部成功,或者全部失败。
事务必须服从IS0/ IEC所制定的ACID原则
注意点:
①事务是指数据库事务,需要使用的数据库支持事务处理
②如: MySQL的InnoDB引擎支持事务,而MyISAM不支持
ACID原则

Spring事务管理器

●JPA事务管理器(JpaTransactionManager )
●通过一个JPA实体管理工厂(javax. persistence . EntityManagerFactory接口的任意实现)将与由工厂所产生的JPA EntityManager合作构建事务。
●JTA事务管理器( JtaTransactionManager )
●本管理器将将事务管理的责任委托给javax. transaction. UserTransaction和javax. transaction. Transact ionManager对象进行事务处理。
Spring事务属性—传播特性
Spring事务属性—隔离特性
注意:
●事务是否只读:不同的数据库厂商支持不同
●MySQL的" read0nly"为true只能查,增删改报异常
●0racle的" read0nly"不影响增删改查
●事务超时:长时间的事务会占用数据库资源
●事务回滚:默认情况只有遇到运行时异常才会回滚,检查性异常则不会,需要自定义回滚策略

编程事务管理和声明事务管理区别

■编程式事务允许用户在代码中精确定义事务的边界;
■声明式事务有助于用户将操作与事务规则进行解耦
●基于A0P交由Spring容器实现
实现关注点聚焦在业务逻辑
■概括而言:
●编程式事务侵入到了业务代码里面,但是提供了更加详细的事务管理;
●声明式事务基于AOP,既能起到事务管理的作用,又可以不影响业务代码的具体实现

异常管理:自定义错误码【示例: druid-demo 】
JDBC异常抽象
— —Spring会将数据操作的异常转换为DataAccessException
— —无论使用何种数据访问方式,都能使用一样的异常

JDBC异常处理
通过SQLErroCodeSQLExceptionTranslator
●解析错误码
ErrorCode定义
●org/springf ramework/jdbc/ support/sq1-error. -codes. xml
● Classpath下的sql-error-codes. xml
●定制错误码解析逻辑【示例: druid-demo】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值