后端——框架——容器框架——spring_boot——《官网》阅读笔记——第四章节6(数据库)

  集成数据库概念上比较复杂,但是配置却非常简单。这个小节只介绍非NO-SQL数据库。Spring boot支持三种类型的数据库,关系型数据库,目录型数据库,内存数据库。以下详细介绍这三种数据库

1、关系型数据库

  在不使用关系型数据库时,使用Spring时,配置关系型数据库有三个步骤

  1. 第一步:配置数据源
  2. 第二步:配置事务
  3. 第三步:集成持久层框架。

1.1   配置数据源

  在之前项目开发中,我见过,使用过最常见的数据源有两种C3P0和DBCP。

  Spring boot查找数据源的顺序是:

  1. 首先查看HikariCP是否可用,
  2. 其次查看Tomcat jdbc connection pool是否可用
  3. 最后查看DBCP2是否可用

  当添加spring-boot-starter-jdbc依赖或spring-boot-starter-data-jpa时,使用的数据源类型是HikariCP。

  无论配置哪种数据源,它在底层性能存在差异,但是大部分的配置项含义都相同。与Spring或spring boot集成的方式都是注入名称为dataSource的bean。

  公共的配置项,无论是哪种数据源都需要配置url,driver,user,password

# 驱动类型,我使用的是mysql
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# url地址,IP:数据库IP地址,port:端口,schemaName:数据库实例
spring.datasource.url=jdbc:mysql://IP:port/schemaName?characterEncoding=UTF-8&serverTimezone=GMT%2B8
# 用户名
spring.datasource.username=your user name
# 密码
spring.datasource.password=your password

  以上不区分数据源,之后的配置项都与数据源有关,当选用HikariCP时,配置项的前缀是spring.datasource.hikari;当选用tomcat连接池时,配置项的前缀是spring.datasource.tomcat;当选用dbcp2数据源时,配置项的前缀是spring.datasource.dbcp2。

  如果想使用C3P0数据源,只能手动的编写方法创建ComboPooledDataSource对象,并在方法上添加@Bean注解。

1.2  配置事务

  没有多大变化,使用原来方式即可,三种,@Transcational注解,配置Advice,编写TranscationDefinition等代码。

1.3  集成持久层框架

  持久层框架的种类非常多,Spring boot支持的五种

  1. Spring data:spring自己的持久层框架,使用JdbcTemplate方式执行SQL语句。
  2. Mybatis:最常用,最普遍的。
  3. Hibernate:也较为常见的一种持久层框架。
  4. JPA:Java Presistence API。

1.3.1     Spring data

  1. 添加spring-boot-data-jdbc的依赖,它会自动注入JdbcTemplate类,这是spring-data模块中操作Jdbc的工具类,可以执行SQL语句,具体参考API。
  2. 创建XXService,添加JdbcTemplate依赖(使用AutoWired注解即可)。
  3. 编写创建表,增,删,改,查的SQL语句,调用jdbcTemplate.execute方法即可。

1.3.2    Mybatis

  参考https://www.cnblogs.com/rain144576/p/12228917.html

1.3.3    JPA

  1. 添加spring-boot-data-jpa的依赖。
  2. 创建XXService,继承JpaRepository接口,XXService<T,ID>,T表示实体类,ID为ID属性的类型,一般为Long,String。
  3. 编写增,删,改,查的方法。这些方法来源于JpaRepository,具体得参考这个类的API。

  默认情况下,会自动执行classpath路径下的data.sql,schema.sql,可以把建表语句写在schema.sql中,插入语句写在data.sql中。

1.3.4 Hibernate

  待补充

2、目录型数据库

  类比关系型数据库,目录型数据库也有自己的一套生态。

  关系型数据库类型:Mysql,Oracle。目录型数据库类型:OpenLdap

  关系型数据库工具:PL/SQL developer,Navicat For mysql。目录型数据库工具:userBoostLight(付费软件)

  关系型数据库框架:mybatis,Hibernate,spring-data。目录型数据库框架:spring ldap。

  关系型数据库API:jdbc。目录型数据库框架:jndi。

  与关系型数据库配置类似,目录型数据库也只需要配置数据源。

<bean id="DirContextSource" class="org.springframework.ldap.core.support.LdapContextSource">
		<property name="url" value="ldap://localhost:389" />
		<property name="base" value="dc=julian,dc=com" />
		<property name="userDn" value="cn=Manager,dc=julian,dc=com" />
		<property name="password" value="secret" />
</bean>
<bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
	 <constructor-arg ref="DirContextSource"/>
</bean>

  之后的操作也与关系型数据类似,增,删,改,查。区别在于关系型数据库是DDL,DCL。而目录结构性数据库是修改相关的配置文件。

3、内存数据库

  内存数据库以h2为示例。使用内存数据库的步骤如下

  1. 第一步,添加依赖
<!-- H2数据库 -->
<dependency>
	<groupId>com.h2database</groupId>
	<artifactId>h2</artifactId>
	<scope>runtime</scope>
</dependency>

  2.第二步,添加配置项,这些配置项的目的是通过浏览器访问内存数据库

spring.h2.console.enabled=true
spring.h2.console.path=/h2Console

  3.第三步,启动项目,在浏览器中输入localhost:8080/h2Console。当出现错误时,在日志查看一下HikariConfig,这是数据源的配置信息。我之前老犯将username写为user的错误,导致用户名/密码错误。

  成功之后的界面

  

4、示例

# database
# 驱动类型,我使用的是mysql
# spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.driver-class-name=org.h2.Driver
# url地址
# spring.datasource.url=jdbc:mysql://127.0.0.1:3306/personal_life?characterEncoding=UTF-8&serverTimezone=GMT%2B8
spring.datasource.url=jdbc:h2:mem:testdb
# 用户名
spring.datasource.username=wrd
# 密码
spring.datasource.password=personal

# h2
spring.h2.console.enabled=true
spring.h2.console.path=/h2Console
原文地址:https://www.cnblogs.com/rain144576/p/12498415.html