티스토리 뷰
개요
- Spring Boot 기반 프로젝트에서 DynamoDB를 사용하기 위한
@DynamoDbBean
클래스를 작성하는 방법을 정리하였다.
사전 요구 지식
@DynamoDbBean 빈 설계 예
@DynamoDbBean
는 JPA의 @Entity와 동일한 역할을 수행하는 빈을 작성할 때 명시한다. 실제 DynamoDB의 물리 테이블을 맵핑하는 역할을 해준다. 따라서 실제 테이블에 설계된 Primary Key와 Secondary Index가 정확하게 반영되어야 한다. 아래는 환율과 국가 코드에 따른 일간 환율 정보를 저장하는 테이블에 맵핑되는 빈의 작성 예이다.
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.*
import java.math.BigDecimal
@DynamoDbBean
data class Currency(
// KSUID
@get:DynamoDbAttribute("id")
var id: String = "",
// Primary Key
// pk-currencyCode-contryCode-sk-timestamp
@get:DynamoDbPartitionKey
@get:DynamoDbAttribute("PK")
var pk: String = "",
@get:DynamoDbAttribute("currency_code")
@get:DynamoDbSecondaryPartitionKey(indexNames = ["gsi-pk-currency-code-sk-timestamp"])
var currencyCode: String = "",
@get:DynamoDbAttribute("contry_code")
var contryCode: String = "",
@get:DynamoDbAttribute("value")
var value: BigDecimal = BigDecimal.ZERO,
@get:DynamoDbSortKey
@get:DynamoDbAttribute("timestamp")
@get:DynamoDbSecondarySortKey(indexNames = ["gsi-pk-currency-code-sk-timestamp"])
var timestamp: String = ""
)
- DynamoDB의 엔티티 클래스에는
@DynamoDbBean
을 명시한다. - 각 애트리뷰트와 필드를 맵핑하기 위한 정보로서
@DynamoDbAttribute
을 명시할 수 있다. 이를 통해 물리적인 애트리뷰트의 이름과 필드명을 다르게 할 수 있다. - Primary Key(PK)의 Partition Key(PK)에 해당하는 필드에는
@DynamoDbPartitionKey
를 명시한다. 마찬가지로 Primary Key(PK)의 Sort Key(SK)에 해당하는 필드에는@DynamoDbSortKey
를 명시한다. - GSI에는 앞서 PK와 유사하게
@DynamoDbSecondaryPartitionKey
와@DynamoDbSecondarySortKey
를 명시한다.
Instant 날짜/시간 타입 애트리뷰트
- UTC+0 기준의 timestamp 정보를 저장하는
Instant
타입은 자동으로 DynamoDB의 String 타입으로 변환된다. (Instant 타입의toString()
값인 ISO 8601 형식의 문자열이 그대로 저장된다.) 따라서 만약, Instant 타입을 PK의 SK로 사용할 경우 테이블 생성 시점에 반드시 String 타입으로 생성해야 한다.
참고 글
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- node.js
- JavaScript
- Docker
- jpa
- Tomcat
- Eclipse
- DynamoDB
- maven
- jstl
- Kendo UI Web Grid
- CentOS
- Spring MVC 3
- Spring Boot
- 구동계
- bootstrap
- JHipster
- Kendo UI
- 로드바이크
- 알뜰폰
- jsp
- MySQL
- 태그를 입력해 주세요.
- java
- graylog
- kotlin
- 자전거
- 로드 바이크
- spring
- 평속
- chrome
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함