dynamodb容器使用

以前,我们使用Java创建了DynamoDB表。

对于各种数据库,例如sql数据库或nosql,有一组工具可帮助访问,持久化和管理对象/类与基础数据库之间的数据。 例如,对于SQL数据库,我们使用JPA,对于Cassandra,我们使用MappingManager。

DynamoDBMapper是一个工具,使您可以访问各种表中的数据,对项目执行各种CRUD操作以及对表执行查询和扫描。

我们将尝试映射上一个示例中的“用户”,“登录名”,“主管”和“公司”表。
Users是一个简单的表,使用用户的电子邮件作为哈希键。

package com.gkatzioura.dynamodb.mapper.entities;import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable;/*** Created by gkatzioura on 9/20/16.*/
@DynamoDBTable(tableName="Users")
public class User {private String email;private String fullName;@DynamoDBHashKey(attributeName="email")public String getEmail() {return email;}@DynamoDBAttribute(attributeName="fullname")public void setEmail(String email) {this.email = email;}public String getFullName() {return fullName;}public void setFullName(String fullName) {this.fullName = fullName;}
}

但是,在各种情况下,我们的DynamoDB表都使用哈希和范围键。 登录表可跟踪用户的登录尝试。 电子邮件是哈希键,时间戳是范围键。

package com.gkatzioura.dynamodb.mapper.entities;import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBRangeKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable;/*** Created by gkatzioura on 9/20/16.*/
@DynamoDBTable(tableName="Logins")
public class Login {private String email;private Long timestamp;@DynamoDBHashKey(attributeName="email")public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@DynamoDBRangeKey(attributeName="timestamp")public Long getTimestamp() {return timestamp;}public void setTimestamp(Long timestamp) {this.timestamp = timestamp;}
}

另一种流行的情况是带有全局二级索引(GSI)的表。 例如,“主管”表用于按主管的姓名检索主管。 但是,我们也使用此表来检索特定公司的所有主管或在公司特定工厂工作的主管。
主管名称是我们的哈希键,公司名称是哈希键,工厂名称是全局二级索引的范围键。

package com.gkatzioura.dynamodb.mapper.entities;import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBIndexHashKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBIndexRangeKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable;/*** Created by gkatzioura on 9/21/16.*/
@DynamoDBTable(tableName="Supervisors")
public class Supervisor {private String name;private String company;private String factory;@DynamoDBHashKey(attributeName="name")public String getName() {return name;}public void setName(String name) {this.name = name;}@DynamoDBIndexHashKey(globalSecondaryIndexName = "FactoryIndex",attributeName = "company")public String getCompany() {return company;}public void setCompany(String company) {this.company = company;}@DynamoDBIndexRangeKey(globalSecondaryIndexName = "FactoryIndex",attributeName = "factory")public String getFactory() {return factory;}public void setFactory(String factory) {this.factory = factory;}
}

最后但并非最不重要的一点是,我们可以使用本地二级索引。 公司表使用公司名称作为哈希键,使用子公司名称作为范围键。 由于我们要基于公司的CEO发出查询,因此将本地二级索引与基于CEO姓名的范围键一起使用。

package com.gkatzioura.dynamodb.mapper.entities;import com.amazonaws.services.dynamodbv2.datamodeling.*;/*** Created by gkatzioura on 9/21/16.*/
@DynamoDBTable(tableName="Companies")
public class Company {private String name;private String subsidiary;private String ceo;@DynamoDBHashKey(attributeName="name")public String getName() {return name;}public void setName(String name) {this.name = name;}@DynamoDBRangeKey(attributeName = "subsidiary")public String getSubsidiary() {return subsidiary;}public void setSubsidiary(String subsidiary) {this.subsidiary = subsidiary;}@DynamoDBIndexRangeKey(localSecondaryIndexName = "CeoIndex",attributeName = "ceo")public String getCeo() {return ceo;}public void setCeo(String ceo) {this.ceo = ceo;}
}

您可以在github上找到源代码。

翻译自: https://www.javacodegeeks.com/2016/09/map-dynamodb-items-objects-using-dynamodb-mapper.html

dynamodb容器使用

dynamodb容器使用_使用DynamoDB映射器将DynamoDB项目映射到对象相关推荐

  1. MyBatis学习之映射器Mapper(接口映射器+xml映射文件)

    Table of Contents 01 MyBatis映射器: 1.1 接口映射器+xml映射器 1.2 接口映射器+注解 02 接口映射器+xml映射器  方式 2.1 mybatis配置文件 引 ...

  2. dynamodb容器使用_使用DynamoDBMapper插入DynamoDB项目

    dynamodb容器使用 在上一篇文章中,我们使用DynamoDBMapper来将DynamoDB表映射到Java对象. 插入时,我们的动作几乎相同,但是方式更方便. 为了插入项目,您要做的就是使用对 ...

  3. dynamodb容器使用_使用DynamoDBMapper扫描DynamoDB项目

    dynamodb容器使用 之前,我们介绍了如何使用DynamoDBMapper或底层Java api查询DynamoDB数据库. 除了发出查询之外,DynamoDB还提供扫描功能. 扫描的目的是获取您 ...

  4. 使用DynamoDB映射器将DynamoDB项目映射到对象

    以前,我们使用Java创建了DynamoDB表. 对于各种数据库(例如sql数据库或nosql),有一组工具可帮助访问,持久化和管理对象/类与基础数据库之间的数据. 例如,对于SQL数据库,我们使用J ...

  5. Spring MVC源码解析——HandlerMapping(处理器映射器)

    Sping MVC 源码解析--HandlerMapping处理器映射器 1. 什么是HandlerMapping 2. HandlerMapping 2.1 HandlerMapping初始化 2. ...

  6. 【SpringMVC框架】非注解的处理器映射器和适配器

    非注解的处理器映射器和适配器 1.非注解的处理器映射器 之前的处理器映射器: org.springframework.web.servlet.handler.BeanNameUrlHandlerMap ...

  7. [MyBatis日记](3)映射器配置文件与映射器接口

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/SunnyYoona/article/details/50659993 前一篇文章([MyBatis日 ...

  8. MapStruct系列(5)-映射器数据类型转换详解

    文章目录 前言 1. 隐式类型转换 2. 映射引用类型 3. 嵌套映射 4. 调用自定义映射方法 5. 调用其他映射器 6. 将映射目标类型传递给自定义映射器 7. 将上下文或状态对象传递给自定义方法 ...

  9. mybatis映射器用法

    mybatis映射器 映射器: 系统并没有给出固定且明确的概念,我的理解是:映射器实现了数据库和Java之间数据的交互. 映射器包含了增删改查和结果映射. mybatis映射器分类: mybatis映 ...

最新文章

  1. Linux命令:模拟电信联通双网络智能解析域名
  2. 大数据预测:成都、郑州等跻身春节十大“瘦身”城市
  3. 如何判断网通、电信、铁通IP地址分配段
  4. 深入源码分析Java线程池的实现原理
  5. C#单元测试如何查看输出的调试信息?
  6. python 报ImportError: Install xlrd = 1.0.0 for Excel support错误出现及其解决帮法
  7. Spring Boot(20)---开发Web应用之JSP篇
  8. linux ls命令无法执行,更新了个依赖程序,结果悲剧了,连ls命令都不能用,大神帮帮忙!...
  9. 规律、逻辑规律与悖论
  10. oracle数据库小总结(2017年7月10日)
  11. 虚控件在GUI编程中的应用
  12. ckplayer html播放本地,vue中使用ckplayer播放器
  13. CentOS 7下限制ip访问
  14. Long-tail Relation Extraction via Knowledge Graph Embeddings and Graph Convolution Networks
  15. 数位板电脑绘画网课盘点(手绘动漫课程排名)
  16. 怕麻烦的人,过不了好生活,好真实
  17. 【Python】求笛卡尔乘积
  18. Web安全之文件上传漏洞
  19. split()方法,limit参数作用
  20. Python实现网络爬虫,爬关键词“武汉”的百度新闻

热门文章

  1. 数论分块练习([CF830 C]Bamboo Partition + [hdu 6395]Sequence )
  2. 2021牛客OI赛前集训营-树数树【树上启发式合并,堆】
  3. jzoj3918-蛋糕【二分】
  4. nssl1257-A【数论】
  5. jzoj3382-七夕祭【贪心,中位数】
  6. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明) AC(带悔贪心)
  7. codeforces1440 D. Graph Subset Problem
  8. Spark Streaming之统计socket单词数
  9. 90 % Java 程序员被误导的一个性能优化策略
  10. [初级]Java命令学习系列(六)——jinfo