使用Spring-MongoDB访问全球分布数据库Cosmos DB(2)
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
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); }
@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();} }
使用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)相关推荐
- 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 ...
- 使用Spring Data访问MongoDB数据库
本文将引导我们如何使用Spring Data MongoDB构建应用程序,并使用应用程序在MongoDB(基于文档的数据库)中存储数据与检索数据. 需要新建什么 我们要使用Spring Data Mo ...
- java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- java php同时访问数据库,Java Spring中同时访问多种不同数据库的代码实例分享
开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中.使用Spring框架时,使用单一数据库是非常容易的,但如果要同时 ...
- Java Spring中同时访问多种不同数据库
开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中.使用Spring框架时,使用单一数据库是非常容易的,但如果要同时 ...
- Azure Cosmos DB(Azure 宇宙数据库)--地球已无法阻止微软玩数据库了
Azure Cosmos DB(Azure 宇宙数据库)--地球已无法阻止微软玩数据库了 2017-08-02Max Shen,Max讲IT Azure Cosmos DB,神奇的数据库,我觉得其实都 ...
- Google Spanner:谷歌的全球分布式数据库
目录 1. 介绍 2. 实现 3. TrueTime 4. 并发控制 5. 实验分析 6. 相关工作 7. 未来的工作 8. 总结 Spanner: Google' s Globally-Distri ...
- SpringBoot 2 访问 Neo4j 图数据库
开篇词 该指南将引导你完成使用 Spring Data Neo4j 来构建应用,该应用将数据存储在基于图形的数据库 Neo4j 中并从中检索数据. 你将创建的应用 我们将使用 Neo4j 的基于 No ...
最新文章
- 6.4 如何初始化聚类中心-机器学习笔记-斯坦福吴恩达教授
- 15个最受欢迎的Python开源框架(转载)
- python导出xlsx_使用python库xlsxwriter库来输出各种xlsx文件
- Hebbian principle理解
- 时间格式化需要注意点不可使用本地时间
- Linux下TCP/IP优化
- JSON字符串与Map互转
- 【备战春招/秋招系列】美团Java面经总结进阶篇 (附详解答案) 1
- 10.Shell 编程从入门到精通 --- 超级工具(shell,ssh,screen,vim)
- 三端稳压管型号选型对照大全-KIA半导体
- 运放失真罪魁祸首之压摆率和增益带宽积
- linux系统的drm配置mipi,Linux 进阶 DRM等.....
- 纪念三毛辞世20周年——《三毛经典语录》
- 如何俘获一个 IT 男的心,让他成为男友然后变成老公
- c++语言解一元二次方程,C++ 求解一元二次方程
- 动画和漫画里ed、op、OVA、ost、bl、gl是什么意思?
- 用PyOpenGL叩开3D的心扉——OpenGL全解析(2)
- 光通量发光强度照度亮度关系_单位面积光功率和照度,光强,亮度,光通量怎么换算?...
- 三星显示android recovery,三星手机怎么进入recovery模式?详细图文教程指导
- 一个5M免费JSP空间
热门文章
- 上市公司回购股票是利好还是利空?
- 炒股一年,本金18万已亏损10万,还要不要继续?
- 有人说“如今聪明的年轻人上班,愚蠢的年轻人创业!”对此大家怎么看?
- 你见过最奇葩的人和事是什么?
- 干什么事都要先定位,再聚焦
- 格力市值3900亿,美的市值6300亿
- 1000个网络摄像头如何组网?
- 为什么电脑CPU这么贵?
- 32位和64位操作系统,二者有何区别?是否64位更快?
- At the beginning of the month, the doctor introduced in the article “iOS