SpringORM框架访问数据库
Spring Boot提供了直接使用JDBC连接数据库的方式,但是使用JDBC并不是很方便,需要我们写更多的代码来完成对象和关系数据库的转换;另一种方式是将实体和实体的关系对应数据库的表和表的关系,这类工具通常是ORM工具,对实体和实体关系的操作会映射到数据库的操作。一般而言,在Spring Boot中,我们常用的ORM框架有JPA和MyBatis。Spring Data JPA默认采用Hibernate实现。
ORM的概念
对象关系映射(Object Relational Mapping,ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。简单来说,就是将数据库表与Java实体对象做映射。
ORM的优缺点
● 优点:符合面向对象编程;技术与业务解耦,开发时不需要关注数据库的连接与释放。
● 缺点:ORM会牺牲程序的执行效率,会固定思维模式。
ORM的主流框架
包括Hibernate、JPA、MyBatis等。下面主要介绍基于JPA规范再次封装抽象实现的Spring Data JPA项目。在介绍Spring Data JPA之前,我们先简单介绍一下JPA。
什么是JPA
JPA是Java Persistence API的简称,中文名为Java持久层API,使用注解或XML描述对象与关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA包括以下3方面内容:
● 一套API标准:它在javax.persistence的包下面,用来操作实体对象,执行CRUD操作,程序在后台完成所有的事情,帮助开发者从烦琐的JDBC和SQL代码中解脱出来。
● 面 向 对 象 的 查 询 语 言 : Java PersistenceQueryLanguage(JPQL)。这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言来查询数据,避免与程序的SQL语句紧密耦合。
● Object/Relational Metadata:作为对象与表关系的映射,JPA支持XML和注解两种元数据形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。
JPA访问数据库实例
1.引入相应Maven依赖
2.添加配置文件application.yml
说明:
spring.jpa.database-platform这个参数主要用于指定默认的数据库存储引擎,在Spring Boot 2中,默认的MySQL数据库存储引擎是MyISAM,通过把取值设置为org.hibernate.dialect.MySQL5InnoDBDialect,就可以把默认的存储引擎切换为InnoDB。
3.创建Entity
4.创建OrderLog的父类BaseEntity
5.创建数据访问Repository
Repository是Spring Data的核心概念,抽象了对数据库和NoSQL的操作,提供了如下接口供开发者使用:
6.接口测试类UserController.java
Repository提供save方法来保存或者更新一个实体,默认情况下,如果Entity的主键属性为空,则认为是新的实体,保存实体;反之,如果Entity的主键属性不为空,则更新实体。
mybatis-spring-boot-starter实例
1.添加Maven依赖
2.在application.yml中添加相关配置
说明:Spring Boot会自动加载spring.datasource.*相关配置,数据源会自动注入sqlSessionFactory,sqlSessionFactory会自动注入Mapper。
3.在启动类中添加对mapper包的@MapperScan注解
4.开发Mapper实现数据操作
5.使用测试用例
通过上述几个步骤就基本完成了相关Dao层的开发,使用时当作普通的类注入就可以了。
总结一下,JPA的学习成本比MyBatis略高,MyBatis比JPA更灵活,使用MyBatis方式的同时可以使用XML的方式,进行添加User的映射文件,这里由于篇幅所限就不再赘述。上面我们主要介绍了SpringBoot通过JDBC和ORM的方式完成对关系数据库的访问,接下来我们将介绍Spring Boot如何实现对NoSQL数据存储的集成和管理。