【Spring连载】使用Spring Data访问 MongoDB(一)----快速指南

这篇具有很好参考价值的文章主要介绍了【Spring连载】使用Spring Data访问 MongoDB(一)----快速指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、版本要求

Spring Data MongoDB 4.x二进制文件需要JDK级别17及以上版本和Spring Framework 6.1.4及以上版本。
在数据库和驱动程序方面,你需要至少4.x版本的MongoDB和兼容的MongoDB Java驱动程序(4.x或5.x)。

二、Hello World

首先,需要设置一个正在运行的MongoDB服务器。请参考MongoDB安装指南,了解如何启动MongoDB实例。安装后,启动MongoDB通常是运行以下命令:/bin/mongod然后你可以创建一个Person类来持久化:

package org.springframework.data.mongodb.example;

public class Person {

	private String id;
	private String name;
	private int age;

	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public String getId() {
		return id;
	}

	public String getName() {
		return name;
	}

	public int getAge() {
		return age;
	}

	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
}

你还需要一个主应用程序来运行:

package org.springframework.data.mongodb.example;

import static org.springframework.data.mongodb.core.query.Criteria.*;

import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.MongoTemplate;

import com.mongodb.client.MongoClients;

public class MongoApplication {

	public static void main(String[] args) throws Exception {

		MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "database");
		mongoOps.insert(new Person("Joe", 34));

		System.out.println(mongoOps.query(Person.class).matching(where("name").is("Joe")).firstValue());

		mongoOps.dropCollection("person");
	}
}

当你运行主程序时,上面的例子产生如下输出:

10:01:32,265 DEBUG o.s.data.mongodb.core.MongoTemplate - insert Document containing fields: [_class, age, name] in collection: Person
10:01:32,765 DEBUG o.s.data.mongodb.core.MongoTemplate - findOne using query: { "name" : "Joe"} in db.collection: database.Person
Person [id=4ddbba3c0be56b7e1b210166, name=Joe, age=34]
10:01:32,984 DEBUG o.s.data.mongodb.core.MongoTemplate - Dropped collection [database.person]

即使在这个简单的例子中,也有值得注意的几点:

  • 你可以通过使用标准或反应式(reactive)MongoClient对象和要使用的数据库名称来实例化Spring Mongo的中心助手类MongoTemplate。
  • mapper针对标准POJO对象工作,而不需要任何额外的元数据(尽管你可以选择提供这些信息,参见这里)。
  • 约定(Conventions)用于处理id字段,将其存储在数据库中时转换为ObjectId。
  • 映射约定可以使用字段访问。请注意,Person类只有getter。
  • 如果构造函数参数名称与存储文档的字段名称匹配,则它们用于实例化对象

三、连接到MongoDB

使用MongoDB和Spring的第一个任务是使用IoC容器创建MongoClient对象。有两种主要方法可以做到这一点,要么使用基于Java的bean元数据,要么使用使用基于XML的bean元数据。
对于那些不熟悉如何使用基于Java的bean元数据而不是基于XML的元数据来配置Spring容器的人,请参阅此处参考文档中的高级介绍以及此处的详细文档。

3.1 注册一个mongodb实例

下面展示了注册一个MongoClient实例的示例:
使用Java注册MongoClient

@Configuration
public class AppConfig {

  /*
   * Use the standard Mongo driver API to create a com.mongodb.client.MongoClient instance.
   */
   public @Bean com.mongodb.client.MongoClient mongoClient() {
       return com.mongodb.client.MongoClients.create("mongodb://localhost:27017");
   }
}

使用XML注册MongoClient

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation=
"
http://www.springframework.org/schema/data/mongo https://www.springframework.org/schema/data/mongo/spring-mongo.xsd
http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- Default bean name is 'mongo' -->
    <mongo:mongo-client host="localhost" port="27017"/>

</beans>

这种方法允许你使用标准MongoClient实例,容器使用Spring的MongoClientFactoryBean/ReactiveMongoClientFactoryBean。与直接实例化MongoClient实例相比,FactoryBean还有一个额外的优势,即还为容器提供了ExceptionTranslator实现,该实现将MongoDB异常转换为Spring的可移植DataAccessException层次结构中的异常,用于@Repository注解的数据访问类。Spring的DAO支持特性中描述了这种层次结构和@Repository的使用。

以下示例显示了一个基于Java的bean元数据示例,该元数据支持@Repository注释类上的异常转换:

通过MongoClientFactoryBean/ReactiveMongoClientFactoryBean注册MongoClient文章来源地址https://www.toymoban.com/news/detail-831465.html

3.2 MongoDatabaseFactory接口

3.3 注册一个MongoDatabaseFactory或ReactiveMongoDatabaseFactory

到了这里,关于【Spring连载】使用Spring Data访问 MongoDB(一)----快速指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring连载】使用Spring访问 Apache Kafka(三)----接收消息

    当你使用消息监听器容器,你必须提供一个监听器接收数据。现在有8个受支持的接口做为消息监听器。见以下代码: MessageListener:,当使用自动提交或者容器管理的提交方法之一时,使用MessageListener接口处理从kafka consumer的poll方法收到的单个ConsumerRecord实例。 AcknowledgingMes

    2024年02月01日
    浏览(32)
  • 【Spring连载】使用Spring访问 Apache Kafka(十九)----Apache Kafka Streams支持

    从1.1.4版本开始,Spring for Apache Kafka为Kafka Streams提供了非常好的支持。要从Spring应用程序中使用它,kafka-streams jar必须存在于类路径中。它是Spring for Apache Kafka项目的一个可选依赖项,不会自动下载。 参考Apache Kafka Streams文档建议使用该API的方法如下: 因此,我们有两个主要组

    2024年02月20日
    浏览(30)
  • Spring Boot中使用Spring Data Elasticsearch访问Elasticsearch

    Elasticsearch是一个分布式的全文搜索和分析引擎,它可以将海量数据进行快速的查询和聚合。Spring Data Elasticsearch是Spring Data家族中的一个成员,它提供了与Elasticsearch的集成,可以方便地使用Spring框架来访问Elasticsearch。 在本文中,我们将会介绍如何在Spring Boot中使用Spring Data

    2024年02月08日
    浏览(37)
  • 如何使用Spring Data JPA简化MySQL数据访问

    本篇文章是 “一起学习mysql” 系列的第五篇文章,本篇文章我们学习一下Spring Data JPA的使用,在开始学习器,我们先来了解一下什么是JPA。 JPA的全称是Java Persistence API,是J2EE中的一条规范,它标准化了数据持久化API。在上一篇文章中,我们了解了如何使用MyBatis进行MySQL数据

    2024年02月15日
    浏览(53)
  • SpringBoot 集成 Spring Data Mongodb 操作 MongoDB 详解

    MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,且与关系数据库的最为相像的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。Mongo 最大的特点是它支持的查询语言非常强大,其语法有点

    2024年02月02日
    浏览(37)
  • Spring Data MongoDB实现@DBRef级联存储

    当使用上面的示例保存Person时,会报以下错误,原因是:被引用的对象的id属性为null 出现 MappingException 异常的原因: 被引用的对象在保存到数据库之前没有生成id。确保在保存被引用对象之前为其生成一个唯一的id。 被引用的对象在数据库中的id属性为null。在使用 @DBRef 进行查

    2024年02月12日
    浏览(32)
  • 13、MongoDB--通过 SpringBoot 整合 Spring Data MongoDB(【连接多个 MongoDB 服务器】、【高级定制 MongoDB 客户端】的简单介绍)

    放弃 Spring Boot 为 MongeDB 提供的自动配置,接下来同样要干如下事情: 手动配置多组 ReactiveMongoDatabaseFactory 和 ReactiveMongoTemplate,要连几个 MongoDB 服务器就配置几组。 同步 API 则使用 MongoDatabaseFactory 和 MongoTemplate。 针对不同 MongoDB 服务器,分别开发相应的 DAO 组件类,建议将它

    2024年03月19日
    浏览(48)
  • Spring Data JPA 快速上手

    JPA的全称是Java Persisitence API,即JAVA持久化API,是sum公司退出的一套基于ORM的规范,内部是由一些列的接口和抽象类构成。JPA通过JDK5.0注解描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 Spring Data的优势:可以操作多种数据库,关系型数据库,非关系

    2024年04月23日
    浏览(23)
  • Spring Boot中快速操作Mongodb

    在Spring Boot中集成Mongodb非常简单,只需要加入Mongodb的Starter包即可,代码如下: 然后配置Mongodb的连接信息: 完整配置信息请参考下面: 配置好了之后就直接可以注入MongoTemplate操作数据了 首先创建一个实体类,我们这边用文章来做实体类,定义如下字段: 实体类中的注解解释

    2024年01月17日
    浏览(32)
  • Spring Data访问Elasticsearch----实体回调Entity Callbacks

    Spring Data基础结构提供了钩子,用于在调用某些方法之前和之后修改实体。这些所谓的EntityCallback实例提供了一种方便的方式来检查并可能以回调风格修改实体。 EntityCallback看起来很像一个专门的ApplicationListener。一些Spring Data模块发布特定于存储的事件(如BeforeSaveEvent),允许

    2024年03月21日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包