日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dynamodb容器使用_使用DynamoDB映射器将DynamoDB项目映射到对象 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

dynamodb容器使用

以前,我們使用Java創(chuàng)建了DynamoDB表。

對(duì)于各種數(shù)據(jù)庫(kù),例如sql數(shù)據(jù)庫(kù)或nosql,有一組工具可幫助訪問(wèn),持久化和管理對(duì)象/類與基礎(chǔ)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)。 例如,對(duì)于SQL數(shù)據(jù)庫(kù),我們使用JPA,對(duì)于Cassandra,我們使用MappingManager。

DynamoDBMapper是一個(gè)工具,使您可以訪問(wèn)各種表中的數(shù)據(jù),對(duì)項(xiàng)目執(zhí)行各種CRUD操作以及對(duì)表執(zhí)行查詢和掃描。

我們將嘗試映射上一個(gè)示例中的“用戶”,“登錄名”,“主管”和“公司”表。
Users是一個(gè)簡(jiǎn)單的表,使用用戶的電子郵件作為哈希鍵。

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表都使用哈希和范圍鍵。 登錄表可跟蹤用戶的登錄嘗試。 電子郵件是哈希鍵,時(shí)間戳是范圍鍵。

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;} }

另一種流行的情況是帶有全局二級(jí)索引(GSI)的表。 例如,“主管”表用于按主管的姓名檢索主管。 但是,我們也使用此表來(lái)檢索特定公司的所有主管或在公司特定工廠工作的主管。
主管名稱是我們的哈希鍵,公司名稱是哈希鍵,工廠名稱是全局二級(jí)索引的范圍鍵。

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;} }

最后但并非最不重要的一點(diǎn)是,我們可以使用本地二級(jí)索引。 公司表使用公司名稱作為哈希鍵,使用子公司名稱作為范圍鍵。 由于我們要基于公司的CEO發(fā)出查詢,因此將本地二級(jí)索引與基于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容器使用

總結(jié)

以上是生活随笔為你收集整理的dynamodb容器使用_使用DynamoDB映射器将DynamoDB项目映射到对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。