三年开发程序员可能都不懂SpringORM框架是如何访问数据库的

2022-10-28 15:39:58 浏览数 (1)

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数据存储的集成和管理。

本文给大家讲解的内容是微服务数据架构,数据分类及存储特性,SpringORM框架访问数据库

  1. 下篇文章给大家讲解的内容是微服务数据架构,数据分类及存储特性,Spring Data与NoSQL的集成
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!

本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。

0 人点赞