Spring-MongoDB属于Spring Data项目的一个子项目,是专门针对Java Spring开发人员对MongoDB的一个封装,使用方法,代码风格都和之前写Spring代码保持一致;Spring Boot是Spring社区最近比较热的一个快速代码构建项目,自动处理依赖,快速启动项目,"just run",实际上Spring社区希望大家现在开始任何Spring Application都从Spring boot开始。

目前共享单车比较流行,我们就用共享单车作为例子,使用Bike数据模型进行Cosmos DB MongoDB接口的的存储,访问。

Spring-MongoDB访问Cosmos DB

1. 打开你的Java开发IDE,你可以使用Spring STS(基于Eclipse免费),或者IntelliJ IDEA,本例中使用IDEA,选择新项目,Spring Initializer ,选择使用的JDK,然后下一步:

2. 出现Spring Boot基础maven配置页面,输入项目包名称,描述,类型等信息:

3. 选择需要支持的模型,我们选择NoSQL,然后选择"MongoDB":

4. 输入项目名称,点击完成,完成项目设置

5. 首先我们需要构建数据模型,我们这个例子使用目前流行的共享单车作为例子,我们定义单车的设备号,车辆型号,目前位置的经纬度,更新时间等信息:

  

public class Bike {@Idprivate String deviceID;private String bikeType;private String city;private String country;private Double latitude;private Double longitude;private Date updateDate;public Bike() {}public Bike(String deviceID, String bikeType, String city, String country){this.deviceID = deviceID;this.bikeType = bikeType;this.city = city;this.country = country;}@Overridepublic String toString() {return String.format("Bike[id=%s, generation=%s, city=%s, latitude=%f, longitude=%f, updated=%s]",deviceID, bikeType, city, latitude, longitude, updateDate.toString());}

当然后面还会有一大堆的Getter和Setter方法,非常简单,在此就不占用篇幅了。

6. 然后我们来定义Bike Repository的搜索接口,Spring-MongoDB最为方便的地方就是你只需要定义接口,然后具体的方法会被auto wired,我们定义两个搜索方法,一个是按照设备号来搜索自行车,一个是按照城市来搜索自行车:

import org.springframework.data.mongodb.repository.MongoRepository;public interface BikeRepo extends MongoRepository<Bike, String>
{public List<Bike> findByDeviceID(String deviceID);public List<Bike> findByCity(String city);
}

7. 定义Cosmos DB的连接,运维Cosmos DB我们在创建配置的时候使用的是MongoDB接口,也就说连接Cosmos DB可以使用你以前的MongoDB程序而不用做任何修改,直接使用MongoDB的连接即可,使用我们在上一节创建CosmosDB之后得到的你的Java连接串替换以下代码中的连接串:
@Configuration
public class MongoDBConfig {public @Bean MongoClient mongoClient() {return new MongoClient(new MongoClientURI("mongodb://mycosmos:PASSWORD@mycosmos.documents.azure.cn:10255/?ssl=true&replicaSet=globaldb"));}public @BeanMongoTemplate mongoTemplate() {return new MongoTemplate(mongoClient(), "bike");}
}

8. 最后,我们来实现使用Spring Boot和Spring MongoDB来访问CosmosDB的代码,我们首先定义两个测试数据bike1和bike2,插入数据进行保存,然后搜索所有数据,接着测试两个搜索:使用通过deviceID进行搜索,最后测试使用city进行搜索:

@SpringBootApplication
public class DemoApplication implements CommandLineRunner{@Autowiredprivate BikeRepo repository;public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);}@Overridepublic void run(String... args) throws Exception {repository.deleteAll();Bike bike1= new Bike("bj001", "Gen2", "beijing", "China");bike1.setLatitude(23.34);bike1.setLongitude(24.76);bike1.setUpdateDate(new Date());Bike bike2= new Bike("sh001", "Gen3", "Shanghai", "China");bike2.setLatitude(26.34);bike2.setLongitude(27.76);bike2.setUpdateDate(new Date());//deploy new bicycles

repository.save(bike1);repository.save(bike2);//find all bikes as demo

System.out.println("Bicycles found with findAll():");System.out.println("-------------------------------");
for (Bike bike : repository.findAll()) {
System.out.println(bike);}
System.out.println();//find Bike by deviceID

String deviceID = "sh001";System.out.println("Found bikes with deviceID:" + deviceID);System.out.println("-------------------------------");for (Bike bike : repository.findByDeviceID(deviceID)) {
System.out.println(bike);}
System.out.println();//find Bike by city

String city = "beijing";System.out.println("Found bikes by city:" + city);System.out.println("-------------------------------");for (Bike bike : repository.findByCity(city)) {
System.out.println(bike);}
System.out.println();}
}

8. 运行程序进行测试可以看到,使用标准的MongoDB接口,数据正确保存到了CosmosDB,并通过全部搜索,条件搜索都可以查询数据:

9.最后我们登录到管理界面,点击"数据资源管理器",选择Documents,可以看到我们刚才使用Spring插入的两条数据:

10. 最为方便的地方是Cosmos DB在图形化界面上直接提供了MongoDB shell和Mongo Query功能,方便于大家直接查询或者调试,例子如下:

使用Cosmos DB图形化的Mongo Query查询:

使用Cosmos DB图形化的Mongo Shell(预览阶段支持部分功能):

通过本示例可以看到,使用Cosmos DB的MongoDB模型数据服务:

  • 和MongoDB完全兼容,不用修改程序
  • PAAS服务,免维护,提供99.99%可用性
  • 自定义吞吐量,吞吐量和数据存储大小不限
  • 可定义的一致性级别
  • 使用partition key的分区支持

下一节介绍Cosmos DB的全球分布特性以及数据访问。

转载于:https://www.cnblogs.com/cloudapps/p/7685399.html

使用Spring-MongoDB访问全球分布数据库Cosmos DB(2)相关推荐

  1. azure api 管理_Azure Cosmos DB和MongoDB API入门

    azure api 管理 In the previous article on Azure Cosmos DB, we reviewed NoSQL concepts and how to integ ...

  2. 使用Spring Data访问MongoDB数据库

    本文将引导我们如何使用Spring Data MongoDB构建应用程序,并使用应用程序在MongoDB(基于文档的数据库)中存储数据与检索数据. 需要新建什么 我们要使用Spring Data Mo ...

  3. java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...

    之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...

  4. mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码

    之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...

  5. java php同时访问数据库,Java Spring中同时访问多种不同数据库的代码实例分享

    开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中.使用Spring框架时,使用单一数据库是非常容易的,但如果要同时 ...

  6. Java Spring中同时访问多种不同数据库

    开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中.使用Spring框架时,使用单一数据库是非常容易的,但如果要同时 ...

  7. Azure Cosmos DB(Azure 宇宙数据库)--地球已无法阻止微软玩数据库了

    Azure Cosmos DB(Azure 宇宙数据库)--地球已无法阻止微软玩数据库了 2017-08-02Max Shen,Max讲IT Azure Cosmos DB,神奇的数据库,我觉得其实都 ...

  8. Google Spanner:谷歌的全球分布式数据库

    目录 1. 介绍 2. 实现 3. TrueTime 4. 并发控制 5. 实验分析 6. 相关工作 7. 未来的工作 8. 总结 Spanner: Google' s Globally-Distri ...

  9. SpringBoot 2 访问 Neo4j 图数据库

    开篇词 该指南将引导你完成使用 Spring Data Neo4j 来构建应用,该应用将数据存储在基于图形的数据库 Neo4j 中并从中检索数据. 你将创建的应用 我们将使用 Neo4j 的基于 No ...

最新文章

  1. 6.4 如何初始化聚类中心-机器学习笔记-斯坦福吴恩达教授
  2. 15个最受欢迎的Python开源框架(转载)
  3. python导出xlsx_使用python库xlsxwriter库来输出各种xlsx文件
  4. Hebbian principle理解
  5. 时间格式化需要注意点不可使用本地时间
  6. Linux下TCP/IP优化
  7. JSON字符串与Map互转
  8. 【备战春招/秋招系列】美团Java面经总结进阶篇 (附详解答案) 1
  9. 10.Shell 编程从入门到精通 --- 超级工具(shell,ssh,screen,vim)
  10. 三端稳压管型号选型对照大全-KIA半导体
  11. 运放失真罪魁祸首之压摆率和增益带宽积
  12. linux系统的drm配置mipi,Linux 进阶 DRM等.....
  13. 纪念三毛辞世20周年——《三毛经典语录》
  14. 如何俘获一个 IT 男的心,让他成为男友然后变成老公
  15. c++语言解一元二次方程,C++ 求解一元二次方程
  16. 动画和漫画里ed、op、OVA、ost、bl、gl是什么意思?
  17. 用PyOpenGL叩开3D的心扉——OpenGL全解析(2)
  18. 光通量发光强度照度亮度关系_单位面积光功率和照度,光强,亮度,光通量怎么换算?...
  19. 三星显示android recovery,三星手机怎么进入recovery模式?详细图文教程指导
  20. 一个5M免费JSP空间

热门文章

  1. 上市公司回购股票是利好还是利空?
  2. 炒股一年,本金18万已亏损10万,还要不要继续?
  3. 有人说“如今聪明的年轻人上班,愚蠢的年轻人创业!”对此大家怎么看?
  4. 你见过最奇葩的人和事是什么?
  5. 干什么事都要先定位,再聚焦
  6. 格力市值3900亿,美的市值6300亿
  7. 1000个网络摄像头如何组网?
  8. 为什么电脑CPU这么贵?
  9. 32位和64位操作系统,二者有何区别?是否64位更快?
  10. At the beginning of the month, the doctor introduced in the article “iOS