spring 整合spring data mongodb

时间:2024-03-19 17:37:23

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

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

为什么需要MongoDB

MongoDB与MySQL的区别

关于MongoDB与MySQL的区别可以参考网上关于NoSQL与MySQL的区别,以下是找到的网上的关于两者区别的截图:

spring 整合spring data mongodb 
spring 整合spring data mongodbspring 整合spring data mongodbspring 整合spring data mongodb

总体上讲:

由于MongoDB独特的数据处理方式,可以将热点数据加载到内存,故而对查询来讲,会非常快(当然也会非常消耗内存);同时由于采用了BSON的方式存储数据,故而对JSON格式数据具有非常好的支持性以及友好的表结构修改性,文档式的存储方式,数据友好可见;数据库的分片集群负载具有非常好的扩展性以及非常不错的自动故障转移(大赞)。

不足:数据库的查询采用了特有的查询方式,有一定的学习成本(不高);索引不咋滴;锁只能提供到collection级别,还做不到行级锁;没有事务机制(不能回滚啊);学习资料肯定没有MySQL的多。

其他不多说,下面开始结合spring 整合spring  data mongodb 。

  1,添加依赖,现在项目用的是spring版本是

<spring.version>4.3.12.RELEASE</spring.version>

所以决定spring  data mongodb版本采用(注意,根据自己的spring版本去依赖,不然会报错)

<version>1.10.4.RELEASE</version>

spring 整合spring data mongodb

2,spring  data mongodb的配置有两种方式,一个注解方式,还有xml方式,现在大家都趋向用springBoot,所以还是用注解配置吧,方便向后集成。

    2.1: 新建MongoProperties类,这里需要根据mongodb.properties中的值赋值

spring 整合spring data mongodb


  2.2:新建MongoConfiguration,这里是整合的核心部分,利用@Configuration可实现和xml配置一样的效果,

spring 整合spring data mongodb

另外initMongo()是在springIOC容器加载MongoConfiguration类,初始化会调用的方法,有的时候这里给出一些日志信息,便于我们观察到底使用的是什么环境,哪些参数等,比如将方法体改成:

spring 整合spring data mongodb

在项目启动的时候,将看到控制台输出:对应的host地址,使用的数据库是什么。

 2.3:新建mongodb.properties

spring 整合spring data mongodb

这里又几个问题需要注意一下。mono.host默认配置是localhost,我们一般在Windows上搭建mongoDB时,mongoDB服务默认监听的地址就是127.0.0.1.也就是localhost,如下列图

spring 整合spring data mongodb

用Notepad++打开,找到对应的行

spring 整合spring data mongodb

这里你想修改成本机的ip地址,比如192.168.0.13,修改这一行就可以了,再重新启动(有的时候,即使修改了,但是在测试的时候,还是报链接失败等错误,可以检查自己的ip是否是正确的,比如我原本的ip地址是192.168.0.17,但是不知道什么时候分配成192.168.0.13,最后当然报错,如果用的是他人的monog,最后再用命令 ping ip 检查是否链接)

到这里整合就差不多了,最后就是写demo,进行测试。

最后再提一点,spring data mongodb 可以实现MongoRepository接口,也可以用他的模板MongoTemplate。整合完毕,Over.