原标题:Spring Data MongoDB参考文档(内容来源:Spring中国教育管理中心)
参考文档的这一部分解释了 Spring Data MongoDB 提供的核心功能。
“ MongoDB 支持”介绍了 MongoDB 模块功能集。
“ MongoDB Repositories ”介绍了对 MongoDB 的存储库支持。
11. MongoDB 支持MongoDB 支持包含广泛的功能:
- Spring 配置支持使用基于 Java 的@Configuration类或用于 Mongo 驱动程序实例和副本集的 XML 命名空间。
- MongoTemplate 在执行常见的 Mongo *** 作时提高生产力的助手类。包括文档和 POJO 之间的集成对象映射。
- 异常转换为 Spring 的可移植数据访问异常层次结构。
- 功能丰富的对象映射与 Spring 的转换服务集成。
- 基于注释的映射元数据可扩展以支持其他元数据格式。
- 持久性和映射生命周期事件。
- 基于 Java 的查询、标准和更新 DSL。
- 存储库接口的自动实现,包括对自定义查找器方法的支持。
- QueryDSL 集成以支持类型安全查询。
- 对 JPA 实体的跨存储持久性支持,其字段透明地持久化并使用 MongoDB 检索(不推荐使用 - 将被删除而不替换)。
- 地理空间整合。
对于大多数任务,您应该使用MongoTemplate或 Repository 支持,它们都利用了丰富的映射功能。MongoTemplate是寻找访问功能的地方,例如递增计数器或临时 CRUD *** 作。MongoTemplate还提供了回调方法,以便您可以轻松获取低级 API 工件,例如
com.mongodb.client.MongoDatabase直接与 MongoDB 通信。各种 API 工件的命名约定的目标是复制基础 MongoDB Java 驱动程序中的命名约定,以便您可以轻松地将现有知识映射到 Spring API。
引导设置工作环境的一种简单方法是在STS 中创建一个基于 Spring 的项目。
首先,您需要设置一个正在运行的 MongoDB 服务器。有关如何启动 MongoDB 实例的说明,请参阅MongoDB 快速入门指南。安装后,启动 MongoDB 通常只需运行以下命令:${MONGO_HOME}/bin/mongod
在 STS 中创建 Spring 项目:
- 转到 File → New → Spring Template Project → Simple Spring Utility Project,然后在出现提示时按 Yes。然后输入项目和包名称,例如org.spring.mongodb.example.
- 将以下内容添加到 pom.xml 文件dependencies元素:
3. 将 pom.xml 中 Spring 的版本改为
4.将 Maven 的 Spring Milestone 存储库的以下位置添加到您pom.xml的
存储库也可在此处浏览。
您可能还希望将日志记录级别设置为DEBUG以查看一些附加信息。为此,请编辑log4j.properties文件以具有以下内容:
log4j.category.org.springframework.data.mongodb=DEBUG log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %40.40c:%4L - %m%n
然后你可以创建一个Person类来持久化:
package org.spring.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.spring.mongodb.example; import static org.springframework.data.mongodb.core.query.Criteria.where; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Query; import com.mongodb.client.MongoClients; public class MongoApp { private static final Log log = LogFactory.getLog(MongoApp.class); public static void main(String[] args) throws Exception { MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "database"); mongoOps.insert(new Person("Joe", 34)); log.info(mongoOps.findOne(new Query(where("name").is("Joe")), Person.class)); mongoOps.dropCollection("person"); } }
运行主程序时,前面的示例会产生以下输出:
10:01:32,062 DEBUG apping.MongoPersistentEntityIndexCreator: 80 - Analyzing class class org.spring.example.Person for index information. 10:01:32,265 DEBUG ramework.data.mongodb.core.MongoTemplate: 631 - insert document containing fields: [_class, age, name] in collection: Person 10:01:32,765 DEBUG ramework.data.mongodb.core.MongoTemplate:1243 - findOne using query: { "name" : "Joe"} in db.collection: database.Person 10:01:32,953 INFO org.spring.mongodb.example.MongoApp: 25 - Person [id=4ddbba3c0be56b7e1b210166, name=Joe, age=34] 10:01:32,984 DEBUG ramework.data.mongodb.core.MongoTemplate: 375 - Dropped collection [database.person]
即使在这个简单的例子中,也有几件事需要注意:
- 您可以MongoTemplate通过使用标准com.mongodb.client.MongoClient对象和要使用的数据库名称来实例化 Spring Mongo 的中央帮助器类。
- 映射器针对标准 POJO 对象工作,无需任何额外的元数据(尽管您可以选择提供该信息。请参阅此处。)。
- 约定用于处理id字段,将其转换为ObjectId存储在数据库中的时间。
- 映射约定可以使用字段访问。请注意,Person该类只有 getter。
- 如果构造函数参数名称与存储文档的字段名称匹配,则它们用于实例化对象
有一个包含多个示例的GitHub 存储库,您可以下载并试用这些示例,以了解该库的工作原理。
11.3.使用 Spring 连接到 MongoDB使用 MongoDB 和 Spring 时的首要任务之一是
com.mongodb.client.MongoClient使用 IoC 容器创建对象。有两种主要方法可以做到这一点,一种是使用基于 Java 的 bean 元数据,另一种是使用基于 XML 的 bean 元数据。以下各节将讨论两者。
对于那些不熟悉如何配置使用基于Java bean的元数据,而不是基于XML的元数据Spring容器,请参阅参考文档的高级介绍这里还有详细的文档在这里。
11.3.1.使用基于 Java 的元数据注册 Mongo 实例以下示例显示了使用基于 Java 的 bean 元数据注册 a 实例的示例
com.mongodb.client.MongoClient:
示例
56.com.mongodb.client.MongoClient使用基于 Java 的 bean 元数据注册对象
@Configuration public class AppConfig { public @Bean MongoClient mongoClient() { return MongoClients.create("mongodb://localhost:27017"); } }
这种方法允许您使用标准
com.mongodb.client.MongoClient实例,容器使用 Spring 的MongoClientFactoryBean. 与com.mongodb.client.MongoClient直接实例化实例FactoryBean相比,它还为容器提供了一个ExceptionTranslator实现,该实现将 MongoDB 异常转换为 Spring 的可移植DataAccessException层次结构中的异常,用于使用注释注释的数据访问类@Repository。Spring 的 DAO 支持特性中@Repository描述了这种层次结构和使用。
以下示例显示了一个基于 Java 的 bean 元数据的示例,该元数据支持对带@Repository注释的类进行异常转换:
示例
57.com.mongodb.client.MongoClient使用 Spring注册对象MongoClientFactoryBean并启用 Spring 的异常转换支持
@Configuration public class AppConfig { public @Bean MongoClientFactoryBean mongo() { MongoClientFactoryBean mongo = new MongoClientFactoryBean(); mongo.setHost("localhost"); return mongo; } }
要访问
com.mongodb.client.MongoClient由MongoClientFactoryBean其他@Configuration类或您自己的类创建的对象,请使用private @Autowired MongoClient mongoClient;字段。
虽然您可以使用 Spring 的传统
com.mongodb.client.MongoClient容器注册 的实例,但 XML 可能非常冗长,因为它是通用的。XML 命名空间是配置常用对象(例如 Mongo 实例)的更好替代方法。mongo 命名空间允许您创建 Mongo 实例服务器位置、副本集和选项。
要使用 Mongo 命名空间元素,您需要引用 Mongo 架构,如下所示:
示例 58.配置 MongoDB 的 XML 模式
以下示例显示了更高级的配置MongoClientSettings(请注意,这些不是推荐值):
示例 59.使用 XML 模式配置
com.mongodb.client.MongoClient对象MongoClientSettings
以下示例显示了使用副本集的配置:
示例
60.com.mongodb.client.MongoClient使用副本集配置对象的XML 模式
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)