dynamodb容器使用_使用DynamoDB映射器将DynamoDB项目映射到对象

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容器使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xgboost简单介绍_好文干货|全面理解项目中最主流的集成算法XGBoost 和 LightGBM

点击上方“智能与算法之路”,选择“星标”公众号第一时间获取价值内容本文主要介绍基于 Boosting 框架的主流集成算法,包括 XGBoost 和 LightGBM。送上完整的思维导图:XGBoostXGBoost 是大规模并行 boosting tree 的工具,它是目前…

单片机设计时钟程序c语言,单片机电子时钟程序设计

共用体除非必要,否则我们不推荐使用,枚举的用法比较简单,在本书 19 章的项目实践中有很好的示例,这节课我们先来练习一下结构体的使用。下边这个程序的功能是一个带日期的电子钟,相当于一个简易万年历了,并…

本地 Windows 如何将 Web 工程部署到远程 Windows 主机上

文章目录第一步:先连接远程 Windows 主机:第二步:连接远程 Windows 主机后,把发布包复制到远程主机上并确定有关的目录第三步:删除远程主机的数据库中的旧数据第四步:创建新的用户和表空间第五步&#xff1…

kafka streams_Kafka REST Proxy MapR Streams入门

kafka streamsMapR生态系统软件包2.0(MEP)随附了一些与MapR流有关的新功能: 用于MapR Streams的Kafka REST代理为MapR Streams和Kafka集群提供了RESTful接口,使其易于使用和产生消息以及执行管理操作。 Kafka Connect for MapR …

r语言三维柱状图_R语言三维图的绘制

R语言在可视化方面的地位是毋庸置疑的,但是呢相对于MatalabR语言在三维图形的展示上存在一定的劣势。当然,作为大众的免费软件,指定不服,很多人为此也基于R语言开发了一些相应的三维图的绘制包,像rgl,gg3D&…

从事仪表专业学c语言有用吗,测控专业就业方向有哪些 就业前景比你想象中的好...

测控专业就业方向有哪些?这个专业的就业前景好不好?这些问题都是小伙伴们比较关心的问题,下面随小编一起来了解一下吧。主要就业方向1.智能仪器仪表方向,我觉得这个方向主要是从事仪器仪表,电子产品的软件,硬件研发,…

c语言 将url图片存到本地_python爬虫:爬取男生喜欢的图片

任务目标:1.抓取不同类型的图片2.编写一个GUI界面爬虫程序,打包成exe重新文件3.遇到的难点1.分析如何抓取不同类型的图片首先打开网站,可以看到有如下6个类型的菜单在这里插入图片描述点击不同菜单,发现URL显示如下大胸妹&#xf…

hazelcast集群配置_使用HazelCast进行Hibernate缓存:基本配置

hazelcast集群配置之前,我们对JPA缓存,机制以及hibernate提供的内容进行了介绍 。 接下来是一个使用Hazelcast作为二级缓存的Hibernate项目。 为此,我们将在JPA中使用一个基本的spring boot项目。 Spring Boot使用Hibernate作为默认的JPA提…

c语言编译后找不到exe,在VS 2015命令提示符中找不到c – rc.exe

我刚刚安装了Windows 10 Creators Update(版本10.0.15063).我安装了多个版本的Visual Studio(2012年,2013年,2015年和2017年).我几周前才安装了VS 2017.问题在“VS2015 x64本机命令提示符”中运行时,CMake(版本3.8.1)不再找到C/C编译器(在VS 2017命令提示符下运行时它可以正常工…

tomcat如何通过配置的方式部署web工程

Workspaces 下有很多工程文件,这个 Workspaces 是 Myeclipse 自动生成的,我们通过 Myeclipse 写的工程都在这个 Workspaces 文件夹下。 我们部署工程到服务器上,就是要每个 WEB 工程里面的 context 文件夹,这个文件夹可以放在 t…

python爬虫源码_Python—爬虫:王者荣耀全套皮肤【附源码】

怎么获取全套皮肤?用钱买,或者用爬虫爬取下来~虽然后者不能穿。这个案例稍微复杂一点,但是一个非常值得学习的项目。具体实现思路:分析网页源代码结构找到合适的入口穷举访问并解析爬取所有英雄所有皮肤图片代码思路/程序流程&…

java ee规范_测试Java EE 8规范

java ee规范Java EE 8平台肯定在过去的几个月中一直在发展。 规范已经发布了早期的草案评审,里程碑甚至最终版本。 实际上,随着JSF 2.3的发布,JSR-372才刚刚进入最终版本。 有关更多信息,请参见 Arjan的帖子 。 它有幸成为JSR-37…

c语言中Gretchen函数的功能,听过很多的歌的音乐达人给我推荐一下

『 挚爱篇 』1 Bloated -- 挚爱篇2 Joy Is WIthin Reach -- Adrienne3 First Love -- 挚爱篇4 First Time -- 挚爱篇5 Get Funky -- 挚爱篇6 Walking on Air -- 挚爱篇7 Por qu te vas -- 挚爱篇8 爵士慢摇曲 -- Milky9 I Just Cant Get You Out of My Head (Club Mix) -- 挚爱…

JavaScript(JS)常用正则表达式汇总

文章目录自定义字符串校验函数常用正则表达式自定义字符串校验函数 校验字符串是否全由数字组成,是则返回true,否则返回false: function isDigit(str) {var regExp /^[0-9]{1,20}$/;// exec方法如果找到符合正则表达式的字符串&#xff0c…

警惕成教自考_不,保持警惕不会伤害Java。 关于Java许可的评论。

警惕成教自考所以。 Oracle希望通过Java赚钱。 然后,The Register发表了一篇非常对立的文章,上面有一个超级吸引人的标题。 根据他们的消息来源,“ Oracle正在大力加强对声称违反其许可证的Java客户的审计”。 当Twitter诗句对人们批评Oracle…

android colorstatelist_Android 样式系统 | 主题背景属性

在 Android 样式系统系列的前几篇文章中,我们介绍了主题背景与样式的区别,以及为什么说通过主题背景和公共主题背景属性来分解您要实现的内容是一个不错的主意,请点击链接回顾:Android 样式系统 | 主题背景和样式Android 样式系统 | 常见的主…

浙江科技学院c语言考试试卷,浙江科技学院c语言C试卷A.doc

浙江科技学院c语言C试卷A浙江科技学院2012 - 2013学年第学期考试试卷A卷信息、经管、 学院 20 年级 理工科专业得分一、判断题(本大题共12小题,每题小1分,共12分)得分二、单选题(本大题共20小题,每题1分,共20分)A.循环控制表达式的…

MyEclipse的Debug功能最基本的操作

使用 Debug 功能最基本的操作: 1.首先在一个 Java 文件中设断点,然后 Debug as --> Open Debug Dialog,然后在对话框中选类后,再点击 Run 运行程序,当程序走到断点处就会自动转到 Debug 视图 2.F5 键与F6 键均为单…

python二级考试可以用pycharm吗_学Python,Pycharm不能不知道怎么用

栏目介绍必会的Pycharm。我决定把去年写的Python文章整理一个专栏,垃圾的就直接删除,将多篇博文整理成一篇。 工欲善其事必先利其器,Pycharm 是最受欢迎的Python开发工具,它提供的功能非常强大,我尽量把自己用的都写写…

C语言写出生命游戏什么水平,我也来汇报~~~生命游戏。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼int main(void){FILE *wen1,*wen2;system("color f0");char a[1000]{0};int i0;xx ch{0,0};wen1fopen("shuru.txt","r");if (wen1!NULL){while(!feof(wen1)){fread(&a[i],1,1,wen1);}chchinesec…