三年开发程序员可能都不懂SpringORM框架是如何访问数据库的
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框架访问数据库
- 下篇文章给大家讲解的内容是微服务数据架构,数据分类及存储特性,Spring Data与NoSQL的集成
- 觉得文章不错的朋友可以转发此文关注小编;
- 感谢大家的支持!
本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。
相关文章
- Spring框架:第四章:Spring管理数据库连接池
- 面试:第二章:各种框架和中间件以及缓存数据库
- 【愚公系列】2022年12月 数据库-关系数据库迁移框架FluentMigrator的使用
- Mysql性能调优工具Explain结合语句讲解详解数据库
- iOS—SQLite数据库框架之FMDB -Swift详解手机开发
- 使用Qt框架轻松连接MySQL数据库(qt与mysql连接)
- 数据库搭建SSH框架:深入MySQL数据库(ssh框架mysql)
- Oracle数据库中触发器类型分析(oracle触发器类型)
- Yii框架下如何简单配置MySQL数据库(yii配置mysql)
- 数据库访问框架SQL Server第三方数据库访问框架——打通你的数据桥梁(sqlserver第三方)
- 基于SQLServer框架的数据库开发(sqlserver 框架)
- Rails框架玩转MySQL数据库(rails连接mysql)
- 使用Yii框架连接MySQL数据库(yiimysql)
- MySQL技巧:如何截取数据库字段?(mysql截取字段)
- Yii框架下MySQL数据库的查询研究(yiimysql查询)
- 如何快速还原MySQL数据库(mysql 数据库 还原)
- Oracle数据库中的内外链接优化技巧(oracle内外链接)
- MySQL DDL命令,数据库进阶必知(mysql中ddl的命令)
- MySQL数据库遇到1136错误问题的解决方法(mysql中1136错误)
- 数据库导入MySQL数据库Bak文件与MySQL的操作(bak怎么导入mysql)
- Linux下安装配置Oracle数据库技术步骤(linux上oracle)
- 探索使用CI框架连接Oracle数据库的有趣之处(ci框架连接oracle)
- 使用ABP框架连接Oracle数据库(abp连接oracle)
- Net框架如何使用MySQL数据库(.net能用mysql吗)
- 使用Yii框架连接Redis数据库(yii 连接 redis)
- 基于SSM框架实现Redis数据库集成(ssm使用redis使用)
- Ajax+Asp源代码]读取数据库内容的表格(没有用框架)
- CI框架入门示例之数据库取数据完整实现方法