为什么选择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类的引用。