Spring Boot 数据访问框架介绍及使用

news2024/10/6 12:21:20

Spring Boot 数据访问框架介绍及使用

Spring Boot 是一个流行的 Java 应用程序框架,它提供了许多工具和库,帮助开发人员快速构建高效的应用程序。其中,Spring Boot 数据访问框架是其中一个重要的组件,它提供了许多不同的选项,以便开发人员能够与各种不同的数据源进行交互。在本文中,我们将介绍 Spring Boot 中的数据访问框架,并展示如何使用它们。

在这里插入图片描述

Spring Boot 中的数据访问框架

Spring Boot 中有许多不同的数据访问框架,每个框架都有其自己的优缺点和使用场景。下面,我们将介绍其中一些最常用的框架。

JPA

Java Persistence API(JPA)是一个 ORM(对象关系映射)框架,它提供了一种将 Java 对象映射到关系型数据库表格的方法。Spring Boot 中的 JPA 实现有两个主要的选项:Hibernate 和 EclipseLink。Hibernate 是一个广泛使用的 ORM 框架,而 EclipseLink 则是另一个流行的 ORM 框架,它在某些情况下可能具有更好的性能。

以下是在 Spring Boot 中使用 JPA 的示例代码:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "username")
    private String username;

    @Column(name = "password")
    private String password;

    // getters and setters
}

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    User findByUsername(String username);
}

在上面的示例中,我们定义了一个 User 实体类,它映射到名为 “users” 的数据库表格。我们还定义了一个 UserRepository 接口,它继承自 JpaRepository 接口,并使用其自带的 findByUsername 方法来查找具有给定用户名的用户。

Spring Data JDBC

Spring Data JDBC 是一个轻量级的 JDBC(Java 数据库连接)框架,它允许开发人员使用简单的 Java 类来操作关系型数据库。与 JPA 不同,Spring Data JDBC 不涉及 ORM,而是使用简单的 SQL 语句和 Java 对象之间的映射。

以下是在 Spring Boot 中使用 Spring Data JDBC 的示例代码:

public class User {
    private Long id;
    private String username;
    private String password;

    // getters and setters
}

@Repository
public interface UserRepository extends CrudRepository<User, Long> {
    User findByUsername(String username);
}

在上面的示例中,我们定义了一个 User 类,它与 JPA 示例中的 User 实体类非常相似,但没有任何注释。我们还定义了一个 UserRepository 接口,它继承自 CrudRepository 接口,并使用其自带的 findByUsername 方法来查找具有给定用户名的用户。

Spring Data MongoDB

Spring Data MongoDB 是一个为 MongoDB 数据库提供的 Spring 数据访问框架。它允许开发人员使用简单的 Java 对象来操作 MongoDB 数据库文档。在使用 Spring Data MongoDB 时,开发人员可以使用 MongoDB 的原生查询语言,或者使用 Spring Data 提供的查询构建器。

以下是在 Spring Boot 中使用 Spring Data MongoDB 的示例代码:

@Document(collection = "users")
public class User {
    @Id
    private String id;

    private String username;
    private String password;

    // getters and setters
}

@Repository
public interface UserRepository extends MongoRepository<User, String> {
    User findByUsername(String username);
}

在上面的示例中,我们定义了一个 User 类,它与 JPA 示例中的 User 实体类非常相似。我们还定义了一个 UserRepository 接口,它继承自 MongoRepository 接口,并使用其自带的 findByUsername 方法来查找具有给定用户名的用户。

使用 Spring Boot 数据访问框架

现在,我们已经介绍了 Spring Boot 中的一些不同的数据访问框架,接下来我们将演示如何在 Spring Boot 应用程序中使用它们。

配置数据源

首先,我们需要配置数据源。对于关系型数据库,我们可以使用 Spring Boot 自带的 HikariCP 数据源,如下所示:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: mypassword
    driver-class-name: com.mysql.cj.jdbc.Driver

对于 MongoDB 数据库,我们可以使用类似以下的配置:

spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017/mydb

创建实体类和仓库接口

接下来,我们需要创建实体类和仓库接口。根据我们选择的数据访问框架,我们需要定义不同的类。

例如,如果我们选择了 JPA,我们需要定义实体类和继承自 JpaRepository 的仓库接口。如果我们选择了 Spring Data JDBC,我们需要定义一个简单的 Java 类和继承自 CrudRepository 的仓库接口。

使用仓库接口进行数据库操作

最后,我们可以使用仓库接口中提供的方法来进行数据库操作。例如,我们可以使用 findByUsername 方法来从 UserRepository 中查找具有给定用户名的用户,并对它进行修改或删除操作。

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public User getUserByUsername(String username) {
        return userRepository.findByUsername(username);
    }

    public void saveUser(User user) {
        userRepository.save(user);
    }

    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }
}

在上面的示例中,我们定义了一个 UserService 类,它使用自动装配的 UserRepository 对象来执行数据库操作。我们定义了三个方法:getUserByUsername、saveUser 和 deleteUser,它们分别用于从数据库中查找用户、保存用户和删除用户。

结论

Spring Boot 中的数据访问框架提供了许多不同的选项,以便开发人员能够与各种不同的数据源进行交互。在本文中,我们介绍了 JPA、Spring Data JDBC 和 Spring Data MongoDB 这三种最常用的框架,并演示了如何在 Spring Boot 应用程序中使用它们。通过使用这些框架,开发人员可以轻松地进行数据库操作,从而加快应用程序的开发速度,并提高应用程序的性能和可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/727189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

短视频抖音多账号管理系统源码搭建开发(路径一)

一、开发环境 目录 一、开发环境 二、短视频账号矩阵系统源码功能构建模型 短视频抖音多账号管理系统源码搭建开发&#xff0c;视频抖音多账号管理系统源码的开发环境配置非常重要。 1、首先&#xff0c;确保您的计算机已经安装了适当的开发工具&#xff0c;如Java SDK、An…

(css)文字与底部对齐

(css)文字与底部对齐 修改前&#xff1a; 修改后&#xff1a; 代码&#xff1a; .AITip {height: 11%;color: #01ffff;font-size: 24px;//主要属性display: flex;justify-content: center;align-items: flex-end;line-height: 1; }解决参考&#xff1a;https://blog.csdn.n…

多家快递如何跟踪物流信息,并快速掌握了每条物流信息时间差呢

对于很电商商家朋友们他平时一般都是发多家快递&#xff0c;多家快递公司的物流信息处理和管理是一个挑战。很多公司在处理这些信息时需要耗费大量人力和时间&#xff0c;为了提高工作效率和降低成本&#xff0c;需要采用一些高效的管理和利用方法。例如使用第三方的工具来&…

路由的介绍

目录 路由器的转发原理&#xff1a;路由表 路由——指示路由器去往未知网段的方法 路由器的转发原理&#xff1a;路由表 当一个数据包来到路由器&#xff0c;路由器将基于数据包中的目标IP地址查询自身的路由表&#xff0c;如果路由表中有相应的记录&#xff0c;则无条件根据…

Windows系统显示语言的修改及“我们无法获取此Windows显示语言”报错的处理

本文介绍在Windows 10操作系统中&#xff0c;修改系统的显示语言的方法&#xff1b;并解决在这一过程中&#xff0c;出现的“很抱歉&#xff0c;我们无法获取此Windows显示语言”报错问题。 本文就以将原本系统语言的中文修改为英文为例&#xff0c;介绍具体的方法。首先&#…

java 8 stream流之大数据篇

如果你会任意一门语言的stream流&#xff0c;没道理不会大数据开发。 俗话说男追女隔座山&#xff0c;女追男隔层纱。 如果说零基础学大数据&#xff0c;感觉前面是一座山&#xff0c;那么只要你会java或者任意一门语言的stream流&#xff0c;那大数据就只隔了一层纱。 本文以…

gazebo软件创造.world文件。

Gazebo可以创造数据。在Gazebo中创建一个机器人世界&#xff0c;不仅可以仿真机器人的运动功能&#xff0c;还可以仿真机器人的传感器数据。 背景&#xff1a;我是个新接触ros2的小白&#xff0c;变学习试用成功后分享狭窄的片面知识&#xff0c;必然不全&#xff0c;请多包含。…

高精度算法

&#xff08;一&#xff09;算法笔记 &#xff08;二&#xff09;算法的代码 2.1 大数加法的运算 #include<iostream> #include<vector> using namespace std;vector<int> add(vector<int> &a,vector<int> &b){if(a.size()<b.size(…

vue3+elementui-plus实现一个接口上传多个文件

首先&#xff0c;先使用element-plus写好上传组件&#xff0c;变量的定义我在这里就省略了都 <el-form-item prop"file" label"附件"><el-uploadstyle"width:100%"class"upload-demo"dragref"upload-demo"action&…

aardio - 【库】printer打印操作库

封装一些常用的绘图、文本功能&#xff0c;可以方便的进行打印。 绘制单位为毫米&#xff0c;精确度为0.01毫米。 库文件下载&#xff1a; http://chengxu.online → aardio资源下载 → printer.rar 打印效果&#xff1a; 示例代码&#xff1a; import console; impor…

在Django中使用xlrd读取excel表格数据

目录 方法一&#xff1a;按行读取 方法二&#xff1a;按表头与表数据一一对应的关系 方法三&#xff1a;按列的方式读取 之前有说到如何在Django中读取数据库数据写入到excel中 今天来说说如何读取excel中的数据&#xff0c;&#xff08;读取后就可以写入到数据库中了&#…

大数据分析平台选型全攻略:关注这五点绝不会错过!

大数据时代&#xff0c;选择适合的大数据分析平台已然成为企业成功的关键条件之一。企业在选择大数据分析平台时需要关注平台的适用性、可扩展性、可靠性、易用性和价格等五个方面。同时&#xff0c;需要结合自身的业务需求和预算进行综合考虑&#xff0c;这样才能在众多的大数…

ubuntu常用软件安装、异常处理

1.ubuntu更换源 打开以下文件&#xff1a; sudo gedit /etc/apt/sources.list 在文件中添加如下内容 #中科大源 deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main re…

在SpringBoot中整合RabbitMQ(19版idea)

首先呢就需要我们在RabbitMQ的可视化端口创建一个虚拟机,我创建的为 xm 1.创建SpringBoot项目 到这里SpringBoot项目就创建成功了 2.创建测试类 Testpublic void testConnection() throws Exception {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory…

MySQL高级整理

MySQL体系结构 Client Connectors&#xff1a; 接入方支持的协议。Management Serveices & Utilities&#xff1a; 系统管理和控制工具&#xff0c;mysqldump、 mysql复制集群、分区管理等。Connection Pool&#xff1a; 连接池&#xff0c;管理缓冲用户连接、用户名、密码…

IPv6 学习笔记

文章目录 一、概念和现状二、适用场景三、地址分配四、检查是否连接到IPv6网络五、查询本机的IPv6地址六、访问IPv6资源的方法 一、概念和现状 IPv6是英文“Internet Protocol Version 6”&#xff08;互联网协议第6版&#xff09;的缩写&#xff0c;是互联网工程任务组&#x…

原型链与作用域链

在 JavaScript 中使用构造函数来新建一个对象的&#xff0c;每一个构造函数内部都有一个 prototype 属性&#xff0c;属性值是一个对象&#xff0c;这个对象包含了可以由该构造函数的所有实例共享的属性和方法。当使用构造函数新建一个对象后&#xff0c;在这个对象的内部将包含…

electron打包exe桌面项目打开控制台

阿丹&#xff1a; 之前一直在写web项目&#xff0c;按F12开发控制台很方便但是。现在项目涉及到了桌面的应用这就需要在打包的过程中进行书写配置文件main中添加指令来在app加载完成后打开控制台&#xff0c;这样方便我们寻找报错。 打开方式1 因为使用的工具是electron所以找…

Kubernetes中Pod的调度策略

Kubernetes中Pod的调度策略 1、Pod调度 在 Kubernetes 平台上&#xff0c;我们很少会直接创建一个 Pod&#xff0c;在大多数情况下会通过 RC、Deployment、 DaemonSet、Job 等控制器完成对一组 Pod 副本的创建、调度及全生命周期的自动控制任务。 在最早的 Kubernetes 版本…

【动态规划算法练习】day17

文章目录 一、474. 一和零1.题目简介2.解题思路3.代码4.运行结果 二、879. 盈利计划1.题目简介2.解题思路3.代码4.运行结果 三、377. 组合总和 Ⅳ1.题目简介2.解题思路3.代码4.运行结果 四、96. 不同的二叉搜索树1.题目简介2.解题思路3.代码4.运行结果 总结 二维费用的背包问题…