Spring MongoDB

2023-09-18 20:48:44

为什么选择MongoDB,而不是其它的数据库。

在SQL和NoSQL之间有一个大的争论。

在SQL中,创建Tables。

在NoSQL中,我们不维持这个结构。

为什么这样重要。

因为SQL在19世纪70年代变得流行的时候,在那时存储是昂贵的。

我们需要确保使用最小的存储,这样我们可以存储最大量的数据。

这是SQL类型表的意义。

在当前的世界,我们有如此多的非结构化的数据,不能够基于它们创建列。

如果你的表被创建,而想要添加一个新列。

这在SQL中是令人头痛的事,我们不希望在这里使用SQL。

第二个情况是,你想要扩展应用。你想要数据库的复制品。

在SQL中是很难做的。

当然,你可以有复制品。但是同步它是很困难的。

NoSQL在这方面胜出。

MongoDB是NoSQL的数据库。没有Tables,而是Collections。

SQL中用行来存储数据。

在NoSOL中是一个Document。

Documents是Collections的一部分。

不需要为MongoDB安装软件,因为会使用云服务,这个技能集合是很重要的。

其次,需要创建一个MongoDB Service。

MongoDB Atlas。

可以选择AWS,Google Cloud或者Azure。

将在本地环境中使用,连接在自己机器上运行的应用。

仅仅允许自己的机器使用数据库。

这样就部署好了数据库。

Cluster被创建了,还没有创建数据库。

可以点击Browse Collection来浏览数据库。

Collection相当于SQL中的Table。

在Collection里面创建数据库名称,和Collection名称。

为了连接应用到MongoDB,必须要指明MongoDB在哪。

首先,你的MongoDB在系统中,还是在云端上。

第二,你的数据库名是什么,用户名和密码是什么。

在resource目录的application.propertiesl里,可以做这些配置。

 现在,想要发送请求到服务端。在Spring框架中,我们使用Spring MVC。

首先创建数据实体,一个Pojo(Plain Ordinary Java Object)

映射Java类到Document。

@Document(collection = "name")

建立一个一对多的关系时,

@DocumentReference

导致数据库仅仅存储条目的Id,称为手动索引关系。

也有其它的方法在MongoDB中创建关系。

接下来创建Controller。

@RestController

@RequestMapping("/api/v1/name")

返回值为ResponseEntity。HttpStatus.OK返回值类型是200。

curl -i http://localhost:8080/api/v1/name

任何适当的RestAPI 都应该返回合适的状态码。

接下来,尝试从数据库中拉一些数据。

在Core Java  JDBC中需要写很多步骤。

在Spring Data中比较容易。

不需要写任何的方法,任何的实现。

不需要写任何的方法,不需要创建任何的类来实现。

MogoRepository将负责所有的CRUD操作。

需要一个Repository类。

Repository是Interface类型。

extends MongoRepository<DataType, IdType>

@Repository,框架知道这是一个Repository。

一旦我们创建了这个Repository。

创建一个Service类,不需要继承任何类。

@Service

在这个类中,将写数据库访问的代码。

在Service类中,需要一个Repository的引用。

@Autowired意味着Springboot将为你创建一个对象。

findAll方法在MongoRepository中被描述。

可以直接使用MongoRepository中的方法。

再返回到Controller,需要一个Service类的引用。

更多推荐

docker基础命令快速入门

docker快速入门Docker是一个虚拟环境容器,可以将你的开发环境、代码、配置文件等一并打包到这个容器中,并发布和应用到任意平台中。Docker的三个概念镜像Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数。镜像不包含任何动态数据,其内容

4k、VR与万兆光网

“全光万兆”对VR意义重大。pico4的分辨率PICO4的单眼分辨率是2160×2160,整体分辨率高达4320×2160。这是一款高性能的VR一体机,采用了2.56英寸的Fast-LCD屏幕,最高可实现90Hz刷新率,还有1200PPI和20.6PPD的超清晰画面表现。PICO4的视场角为105°,比上一代PICON

使用HTTP爬虫ip中的常见误区与解决方法

在使用HTTP爬虫进行网页抓取时,涉及到IP地址的处理,可能会存在一些常见的误区。以下是一些常见误区及解决方法:1.使用个人IP进行大规模爬取:如果你使用个人住宅IP进行大规模爬取,可能会被目标网站视为恶意攻击,从而导致被封禁。解决方法:使用代理IP,或者租用专门的爬虫服务器。2.忽略IP封禁:一些网站可能会封禁特定的

Android kotlin系列讲解(进阶篇)解析XML格式数据

点击查看>返回总目录<|上一篇:Androidkotlin系列讲解(入门篇)使用HTTP访问网络文章目录1、Pull解析方式2、SAX解析方式通常情况下,每个需要访问网络的应用程序都会有一个自己的服务器,我们可以向服务器提交数据,也可以从服务器上获取数据。不过这个时候就出现了一个问题,这些数据到底要以什么样的格式在网络

Kotlin 不可变数组和可变数组

在Kotlin中,可以使用数组来存储一组相同类型的元素。Kotlin提供了两种类型的数组:不可变数组和可变数组。不可变数组(ImmutableArrays)不可变数组的大小(元素数量)在创建后就确定,并且不能更改。使用arrayOf()函数或者arrayOfNulls()函数创建不可变数组。不可变数组中的元素值是固定的

2023年日经225指数研究报告

第一章指数概况1.1概述日经225指数,又被称为日经平均股票价格或日经225平均指数,通常被称为日经或日经指数,是东京证券交易所的一个重要股价指数。该指数自1950年起由日本经济新闻(TheNikkei)日报计算,它是一个以价格为权重的指数,以日元(JP¥)为单位,其组成部分每年审查一次。该指数涵盖了东京证券交易所第一

Git标签管理:从创建到推送的完整指南

🌷🍁博主猫头虎(🐅🐾)带您GotoNewWorld✨🍁🦄博客首页——🐅🐾猫头虎的博客🎐🐳《面试题大全专栏》🦕文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》🐾学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》🐅学会Gol

RabbitMQ - 消息堆积问题的最佳解决方案?惰性队列

目录一、惰性队列1.1、消息堆积问题1.2、消息堆积问题的解决方法从消费者的角度:从队列的角度:1.3、引入惰性队列1.3.1、什么是惰性队列1.3.2、惰性队列的使用1.3.3、效果演示一、惰性队列1.1、消息堆积问题当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息到达上限

滴滴可观测平台 Metrics 指标实时计算如何实现了又准又省?

在滴滴,可观测平台的Metrics数据有一些实时计算的需求,承载这些实时计算需求的是一套又一套的Flink任务。之所以会有多套Flink任务,是因为每个服务按照其业务观测需要不同的指标计算,也就对应了不同数据处理拓扑。我们尽力抽象用户相同的计算需求,不过由于Flink实时计算任务开发模式和实时计算框架的限制,这些观测指

专业软件测评中心:关于软件性能测试的实用建议

软件性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。性能测试在软件的质量保证中起着重要的作用,它包括的测试内容丰富多样。一、软件性能测试的实用建议1、制定清晰的测试目标:明确测试目标和需求,以便更好地组织测试活动。2、选择合适的测试工具:根据测试需求选择适合的性能测试工具

支付宝支付对接-附带完整代码!!

支付宝对接文章目录支付宝对接1、大纲1.1整体业务流程图1.2、开发流程图1.3、核心参数1.4、支付宝开放平台1.5、支付应用场景1.6、支付宝入驻2、环境准备2.1首先注册自己的支付宝账号2.2沙箱环境2.3支持产品列表3、项目实现3.1、项目代码地址3.2、代码层级3.3、快速启动3.3.1环境准备3.3.2定义

热文推荐