springboot+mongodb,spring整合mongodb

前言:对于编程初学者来说,很多小伙伴可能不太了解mongodb数据库,包括它的概念,项目中的作用,和关系型数据库的区别,以及它的集成方式等等,让我们从头开始,学习它吧!!

一.mongodb介绍             

MongoDB是一个基于分布式文件存储 [1]  的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

二.mongodb的使用场景

      适用于:

        

  1. 内容管理系统(CMS): MongoDB的文档结构适合存储和检索文章、图像和元数据等内容。

  2. 实时分析: 它能处理大量数据,适用于需要实时分析不断产生的数据的场景。

  3. 物联网(IoT)应用: MongoDB可以存储来自IoT设备的数据,因为它能处理快速涌入的数据点。

  4. 目录和库存管理: 适用于管理产品目录和库存,特别是对于具有变化属性的电子商务网站。

  5. 用户数据管理: 存储用户配置文件、偏好和会话数据,MongoDB能高效处理。

  6. 移动应用: 其易于扩展和复制的特性使其适用于需要在设备之间同步数据的移动应用。

  7. 日志和事件追踪: MongoDB可以存储应用程序生成的日志和事件,便于分析和排除问题。

  8. 基于位置的服务: 存储地理空间数据并执行地理空间查询是MongoDB的优势之一,适用于基于位置的应用。

     不适用于:

  1. 复杂的多表事务: MongoDB不支持复杂的多表事务,如果您的应用需要高度关联的多表事务操作,可能需要考虑传统的关系型数据库。

  2. 强烈的一致性要求: MongoDB是一个分布式数据库,对于强烈的一致性要求可能不太合适,特别是在网络故障等情况下。

  3. 复杂的分析查询: 虽然MongoDB能处理实时查询,但复杂的分析查询可能需要更适合数据仓库的解决方案。

  4. 严格的安全要求: 尽管MongoDB提供了安全功能,但在需要满足严格合规性和安全标准的情况下,可能需要更专业的解决方案。

  5. 小型应用: 对于小规模应用,使用MongoDB可能会过于复杂,关系型数据库或其他更简单的解决方案可能更合适。

  6. 仅需要存储结构化数据: 如果您的应用主要涉及结构化数据,并且不需要MongoDB的灵活性和复杂查询功能,那么可能有更适合的数据库选择。

  7. 有限的硬件资源: MongoDB在某些情况下可能需要更多的硬件资源,如果您的环境资源有限,可能需要考虑其他数据库选项。

 三.mongodb的特点

  1. 面向文档: MongoDB是一个面向文档的数据库,数据以类似JSON的BSON格式存储在文档中。这种结构适合存储复杂、嵌套和变化的数据。

  2. 灵活的模式: 不像传统的关系型数据库,MongoDB不需要严格的预定义模式。文档可以具有不同的字段,使得数据模型更加灵活。

  3. 高可扩展性: MongoDB支持水平扩展,允许在需要时添加更多的服务器来分布数据和负载,以满足不断增长的需求。

  4. 复制和冗余: MongoDB支持数据复制,可以创建主从复制或副本集,确保数据冗余性和高可用性。

  5. 内置的分片: MongoDB支持数据分片,使数据在多台服务器上分布,提高查询性能和扩展性。

  6. 支持丰富的查询: MongoDB支持多种查询类型,包括文本搜索、地理空间查询和聚合框架,适用于各种数据分析需求。

  7. 适应大量数据: MongoDB可以处理大量数据,适用于需要高性能处理大数据量的应用场景。

  8. 支持文件存储: MongoDB可以存储和检索大型二进制文件,使其在存储大型媒体文件方面非常有用。

  9. 动态查询语言: MongoDB的查询语言支持动态查询,可以进行复杂的查询和数据操作。

  10. 开源和活跃社区: MongoDB是开源的,拥有活跃的社区支持和持续的开发。

 四.SpringBoot和mongodb的整合

1.添加依赖:


    org.springframework.boot
    spring-boot-starter-data-mongodb

也可以在使用idea时,构建项目的时候就引入mongodb的依赖,至少应包括"Spring Web"和"Spring Data MongoDB"。

2.添加mongodb的连接信息:

//很简单有木有
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mydb

3.定义实体类:创建与MongoDB文档对应的实体类,使用@Document注解标识文档的集合名称,@Id注解标识主键字段:

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

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

    // Getters, setters, constructors, etc.
}

4.创建Repository接口:创建一个继承自MongoRepository的接口,用于执行与数据库交互的操作:

import org.springframework.data.mongodb.repository.MongoRepository;

public interface UserRepository extends MongoRepository {
    // 在这里可以自己定义一些查询方法
}

5.编写业务逻辑:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public User createUser(User user) {
        return userRepository.save(user);
    }

    public List getAllUsers() {
        return userRepository.findAll();
    }

    // 一些其他的服务方法
}

6.编写控制器:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
public class UserController {
    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.createUser(user);
    }

    @GetMapping
    public List getAllUsers() {
        return userService.getAllUsers();
    }

 
}

7.运行测试: 使用POSTman或其他工具测试/users端点,进行创建用户的POST请求,以及使用GET请求获取所有用户。

你可能感兴趣的:(spring,boot,mongodb,后端)