Spring数据源

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章
⭐作者主页:@逐梦苍穹
⭐所属专栏:JavaEE、Spring

目录

  • 1、简介
  • 2、作用
  • 3、开发步骤
    • 3.1、导入坐标
    • 3.2、创建对象
      • c3p0
      • druid
      • 提取jdbc.properties
      • 读取配置文件
    • 3.3、Spring设置数据源
      • 注意
      • 再解耦
    • 3.4、使用数据源
      • 手动
      • 使用jdbc.properties
      • Spring容器创建

1、简介

Spring数据源_第1张图片

Spring框架提供了多种数据源选项,常见的有以下几种:

  1. JDBC数据源:Spring提供了对JDBC数据源的支持,可以通过配置数据源参数来连接各种关系型数据库,如MySQL、Oracle、PostgreSQL等。你可以使用Spring的JdbcTemplate或者ORM框架(如Hibernate)来执行SQL操作。
  2. Apache Tomcat数据源:Spring支持使用Apache Tomcat提供的连接池作为数据源。Tomcat数据源是一个成熟的连接池实现,可以高效地管理数据库连接。
  3. HikariCP数据源:HikariCP是一个快速高效的连接池,被广泛用于Java应用程序中。Spring可以集成HikariCP作为数据源,通过配置参数来管理连接池。
  4. C3P0数据源:C3P0是一个受欢迎的连接池库,也可以作为Spring的数据源。你可以配置C3P0连接池的参数,以满足应用程序对数据库连接的需求。
  5. 还有其他第三方连接池库,如DBCP、BoneCP等,也可以与Spring集成作为数据源。

使用Spring数据源,你可以在Spring的配置文件中定义数据源,并通过注入的方式在应用程序中使用它。这样,你就可以方便地访问数据库,并执行相应的数据库操作。

2、作用

Spring数据源的主要作用是提供数据库连接池,以管理和分配数据库连接。数据库连接是与数据库交互的关键资源之一,每次与数据库建立连接的过程都需要进行网络通信和身份验证,这是一个开销较大的操作。通过使用数据源,可以避免频繁地创建和销毁数据库连接,提高应用程序的性能和响应速度。
以下是Spring数据源的一些主要作用:

  1. 连接管理:数据源负责创建、管理和维护数据库连接。它可以在应用程序启动时初始化一定数量的连接,并在需要时分配连接给应用程序。连接使用完毕后,数据源可以将连接归还到连接池中,以便其他请求可以继续复用该连接,减少连接创建和销毁的开销。
  2. 连接池管理:数据源通过连接池来管理数据库连接。连接池维护一定数量的可用连接,当应用程序请求连接时,从连接池中获取一个可用连接分配给应用程序。如果连接池中没有可用连接,数据源可以根据配置的策略来创建新的连接或等待可用连接释放。
  3. 连接配置:数据源允许你配置数据库连接的参数,如数据库驱动、URL、用户名、密码等。这些配置可以集中管理,便于维护和修改,而不需要在应用程序的多个地方进行重复配置。
  4. 事务管理:Spring数据源与Spring的事务管理框架紧密集成,可以为应用程序提供事务管理的功能。它可以与Spring的声明式事务管理一起使用,自动管理事务的起始、提交和回滚,并确保在事务范围内的数据库操作的一致性和隔离性。
  5. 故障恢复:数据源可以处理数据库连接的异常情况,如连接超时、连接断开等。它可以检测到连接的异常状态,并尝试重新建立连接,从而提高应用程序的可靠性和容错性。

通过使用Spring数据源,应用程序可以更高效地管理数据库连接,提升应用性能和扩展性。同时,数据源还提供了一些额外的功能,如连接池配置、事务管理等,使开发人员能够更轻松地进行数据库操作和事务管理。

3、开发步骤

① 导入数据源的坐标和数据库驱动坐标
② 创建数据源对象
③ 设置数据源的基本连接数据
④ 使用数据源获取连接资源和归还连接资源

3.1、导入坐标

Spring数据源_第2张图片

3.2、创建对象

c3p0

ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUser("root");
dataSource.setPassword("root");
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();

druid

DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("root");
DruidPooledConnection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();

提取jdbc.properties

前面两种创建方式耦合度太高,下面进行解耦合:提取jdbc.properties配置文件:
Spring数据源_第3张图片
Spring数据源_第4张图片

读取配置文件

配置文件里面的内容,实际上就是键值对,类如jdbc.url是一种约定俗成的写法,但是实际上如果写成username=root也无可厚非,不会报错,但是不建议这样做
Spring数据源_第5张图片

ResourceBundle.getBundle方法是Java提供的用于加载资源束(Resource Bundle)的静态方法。它的使用方式如下:
通过基名加载默认的资源束:ResourceBundle rb = ResourceBundle.getBundle(“bundleName”);
这种用法会根据指定的bundleName加载默认的资源束。
默认的资源束文件的命名约定是bundleName.properties,其中bundleName是资源束的基名。

3.3、Spring设置数据源

可以将DataSource的创建权交由Spring容器去完成

  1. DataSource有无参构造方法,而Spring默认就是通过无参构造方法实例化对象的
  2. DataSource要想使用需要通过set方法设置数据库连接信息,而Spring可以通过set方法进行字符串注入

Druid数据源:
Spring数据源_第6张图片

C3p0数据源:
Spring数据源_第7张图片

注意

xml配置数据源只能有一个!
Spring数据源_第8张图片

再解耦

上面配置的时候,也是把配置信息写在applicationContext.xml里面,这样依旧耦合。
下面结合jdbc.properties和applicationContext.xml,使用spring提供的命名空间引入配置文件,从而实现对配置信息进行抽取:
Spring数据源_第9张图片
Spring数据源_第10张图片

3.4、使用数据源

手动

Spring数据源_第11张图片
Spring数据源_第12张图片

使用jdbc.properties

Spring数据源_第13张图片

Spring容器创建

Spring数据源_第14张图片

DataSource是一个数据源对象:
在这里插入图片描述

你可能感兴趣的:(JavaEE,Spring,spring,java,后端)