《Spring》实战——4.Spring&数据库JDBC

港控/mmm° 2023-09-30 11:14 62阅读 0赞

Day_03

1. 数据持久化

数据持久化:就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称;(数据库记录-对象)

82b1b90dbdc8b60e36d46c3e7ba51bf3.png

2. 存在问题

  1. 必须初始化数据访问框架、打开连接、处理各种异常和关闭连接。如果上述操作出现任何问题,都有可能损坏或删除的企业数据;
  2. JDBC中的SQLException;

可能导致抛出SQLException的常见问题包括:

  1. 应用程序无法连接数据库;
  2. 要执行的查询存在语法错误;
  3. 查询中所使用的表和/或列不存在;
  4. 试图插入或更新的数据违反了数据库约束。

JDBC代码经常会让强制捕获很多异常,连接、得到statement、执行SQL、操作resultSet、close释放;尽管强制捕获,但是并没有什么用,因为”无法从SQLException中恢复”;意思就是,都叫SQLException,但即使捕获了,也无能为力;

Spring所提供的平台无关的持久化异常?

Spring的异常体系比JDBC简单的SQLException丰富得多,最重要的是,不用写catch代码块!——它是一个非检查型异常。换句话说,没有必要捕获Spring所抛出的数据访问异常(当然,如果你想捕获的话也是完全可以的);

3. 数据访问模板化

不管我们使用什么样的技术,都需要一些特定的数据访问步骤。例如,我们都需要获取一个到数据存储的连接并在处理完成后释放资源;Spring将数据访问过程中固定的和可变的部分明确划分为两个不同的类:模板(template)和回调(callback)

5f72949e3eadd5ab1b21ff219eedc416.png

4.在Spring中使用JDBC

(1)一个简单的Demo,使用Spring内置的,通过JDBC驱动定义数据源;

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5LiD5rW35YGl5Lq6_size_20_color_FFFFFF_t_70_g_se_x_16

可以通过@Profile选择不同的数据源bean;

定义 JDBC 操作类:watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5LiD5rW35YGl5Lq6_size_20_color_FFFFFF_t_70_g_se_x_16 1

测试类:

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5LiD5rW35YGl5Lq6_size_18_color_FFFFFF_t_70_g_se_x_16

(2)使用第三方的数据库连接池+JDBC模板(JDBCTemplate)

Spring 中提供了一个 Jdbc Template 类,它自己已经封装了一个 DataSource 类型的变量,我们可以直接使用:

6141f742ec561da8ae89aca28c16fe74.png

定义 JDBC 操作类:

c0e4144ab20930dff3d8ccf742676d6a.png

20b851c88ac6f18cd5d46d6f1b91963d.png

测试类不变;可以看到JDBC操作类简化了操作(无需获取/释放Connection,获取Statement,处理异常);

发表评论

表情:
评论列表 (有 0 条评论,62人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Spring4 JDBC详解

    Spring4 JDBC详解 在之前的[Spring4 IOC详解][Spring4 IOC] 的文章中,没有讲使用外部属性的知识点。现在利用配置c

    相关 Note/Spring实战/4

    上一篇:[Note3][] 前言:在 Note1 的 4.3 中简单的描述了什么是装配,以及为什么需要装配。在这一节将详细解析 Spring 是如何装配 Bean 的。创建应

    相关 Spring4JDBC

    数据库连接池 对一个简单的数据库应用,由于对数据库的访问不是很频繁,这时可以简单地在需要访问数据库时,就新创建一个连接,就完后就关闭它,这样做也不会带来什么性能上的开销。但是