数据库配置
In-Memory 数据库
SpringBoot 可以自动配置嵌入式数据库,如:H2,HSQL 和 Derby 等。不需要提供任何连接URL,只需将构建依赖关系包含到要使用的嵌入式数据库中即可。
以 HSQL 配置 In-Memory 数据库:
1 | "org.hsqldb:hsqldb:2.4.0" |
使用内存嵌入式数据库开发应用程序通常很方便。显然,内存数据库不提供持久存储;在应用程序启动时,需要填充数据库,并准备在应用程序结束时丢弃数据。
持久化数据库
与 In-Memory 数据库相比,持久化数据库需要配置更多的信息,如:数据库连接地址、用户名、密码等。
以 Mysql 为例,依赖配置项如下:
1 | "mysql:mysql-connector-java:6.0.6" |
数据库配置项如下:
1 | spring: |
ORM 集成
JPA 使用(Hibernate实现)
Java Persistence API是一种标准技术,可让你将对象映射到关系数据库。 添加 jpa 的依赖:
1 | "org.springframework.boot:spring-boot-starter-data-jpa:1.5.2.RELEASE" |
spring-boot-starter-data-jpa
提供了一种快速入门的方法。它提供以下几个核心依赖:
- Hibernate - 最受欢迎的 JPA 实现之一。
- Spring Data JPA - 轻松实现基于 JPA 的存储库。
- Spring ORMs - 来自 Spring Framework 的核心 ORM 支持。
实体类
通常,JPA 的 Entity
类都是在 persistence.xml
文件中指定。而在 SpringBoot 里面,不再需要这些,而是通过 Entity
扫描来指定。任何以 @Entity
、@Embeddable
或 @MappedSuperclass
标识的类都将被考虑。以前文中的用户实体为例:
建立数据库表及数据初始化脚本如下:
1 | DROP TABLE IF EXISTS sys_user; |
实体类如下:
1 | "sys_user") (name = |
JPA 存储库
Spring Data JPA 存储库是可以定义数据访问接口。Spring 数据存储库通常从 Repository
或 CrudRepository
接口扩展。具体例子如下:
1 | public interface UserRepository extends CrudRepository<User, Long> { |
在这个例子中,自定义了一个 findByUsername
方法,然后继承了 CrudRepository
的所有方法,包括 findAll()
等。
Mybatis 使用
相比 Hibernate 而言,Mybatis 显得更加小巧精致,与 JPA 类似,在 SpringBoot 里面集成 Mybatis 也非常的简单。
首先,配置依赖项:
1 | "org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0" |
配置实体的自动映射与扫描:
1 | mybatis: |
实体类,相对比 JPA 简单一些,在使用 Mybatis 的过程中,保持良好的命名规范,可以极大的简化 Mybatis 的配置,同时也更利于项目的维护:
1 | public class User { |
数据访问映射接口:
1 |
|
数据访问映射接口实现,在 JPA 中,接口在满足其命名规范的时候,是不需要定实现的,而 Mybatis 需要,不过这样也使得 Mybatis 的数据操作更加灵活:
1 |
|
参考链接:
项目的 github 地址:https://github.com/qchery/funda