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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用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表都使用哈希和范圍鍵。 Logins表跟蹤用戶的登錄嘗試。 電子郵件是哈希鍵,時間戳是范圍鍵。

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项目映射到对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。