๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŒฟ Spring/Spring Data DynamoDB5

[Spring Data DynamoDB] Type Error ํ•ด๊ฒฐํ•˜๊ธฐ โ€ @DynamoDBTyped ๋ฌธ์ œ ์ƒํ™ฉ๋ฐ์ดํ„ฐ ์ €์žฅ๊ณผ์ •์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.๋ฐ์ดํ„ฐ attribute์˜ ํƒ€์ž…์„ ์ •ํ™•ํ•˜๊ฒŒ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•„, ์ €์žฅ๊ณผ์ •์—์„œ ํƒ€์ž… ์—๋Ÿฌ๊ฐ€ ๋‚˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.not supported; requires @DynamoDBTyped or @DynamoDBTypeConverted: com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException ์ €์žฅํ•˜๊ณ ์ž ํ–ˆ๋˜ Entity ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. followingUserHandles์™€ followerUserHandles ์ €์žฅ๊ณผ์ •์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.public class User extends BaseEntity { ... @DynamoDBAttribute @Gett.. 2024. 8. 3.
[Spring Data DynamoDB] LocalDateTime ์ €์žฅ ์—๋Ÿฌ ๋ฌธ์ œ ์ƒํ™ฉLocalDateTime์„ DynamoDB์— ์ €์žฅํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.InvalidDefinitionException: Joda date/time type `org.joda.time.LocalDateTime` not supported by default ํ•ด๊ฒฐ ๊ณผ์ •LocalDateTime parsing ์—๋Ÿฌ๋กœ ์ถ”์ธกํ•˜์˜€์œผ๋ฉฐ,์ง์ ‘ LocalDateTime์„ ๋ฐ”๊ฟ”์ฃผ๋Š” Custom Converter๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ํ•ด๋‹น ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•ด ์ค„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. public static class LocalDateTimeConverter implements DynamoDBTypeConverter { @Override public Date convert(LocalDateTime s.. 2024. 8. 3.
[Spring Data DynamoDB] Partition Key์™€ Sort Key๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ๋•Œ ๋ฌธ์ œ ์ƒํ™ฉPOCHAK์€ ์›ํ…Œ์ด๋ธ” ์„ค๊ณ„๋กœ, Partition Key์™€ Sort Key๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์—ฌ ์„ค๊ณ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ Spring Data DynamoDB์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ •์—์„œ BeanCreationException์ด ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์•Œ์•„๋ณด๋Š” ๊ณผ์ •์—์„œ Partition Key์™€ Sort Key๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, CrudRepository๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ PK์™€ SK๋ฅผ ์กฐํ•ฉํ•œ Id ํด๋ž˜์Šค๊ฐ€ ๋”ฐ๋กœ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ์•Œ๊ฒŒ๋˜๊ณ  ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•œ ๊ณผ์ •์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค ~.~๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •UserId ClassUserId ํด๋ž˜์Šค๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. User์—์„œ ์„ค์ •ํ•œ PK์™€ SK์˜ ์กฐํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.์œ ์˜ํ•  ์ ์€ UserId ํด๋ž˜์Šค๋Š” Serializable์„ ๊ตฌํ˜„implementsํ•ด์•ผ ํ•ฉ.. 2024. 8. 3.
[Spring Data DynamoDB] ํŽ˜์ด์ง• ์ •๋ฆฌ 'POCHAK'์„ ๊ฐœ๋ฐœํ•˜๋ฉฐ Spring Data DynamoDB๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์•˜๊ณ ,๊ทธ ๊ณผ์ •์—์„œ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.โ€ป ์ดํ›„ ํฌ์ฐฉ์€ ์„œ๋น„์Šค ํŠน์„ฑ์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ DynamoDB์—์„œ MySQL๋กœ ๋ณ€๊ฒฝ ํ›„ ๋‹ค์‹œ ๊ฐœ๋ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค.- Spirng Data DynamoDB ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ- POCHAK GitHub Repository DDB์—์„œ ํŽ˜์ด์ง•์ด ํ•„์š”ํ•œ ์ด์œ ๊ณต์‹ ๋ฌธ์„œ์—๋„ ์–ธ๊ธ‰๋˜์–ด ์žˆ์ง€๋งŒ, DynamoDB์˜ ๋‹จ์ผ ์ฟผ๋ฆฌ ์ž‘์—…์€ ์ตœ๋Œ€ 1MB์˜ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์šฐ๋ฆฌ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ”„๋กœํ•„ ํƒญ์—์„œ ์ž์‹ ์ด ์ฐํžŒ ๊ฒŒ์‹œ๊ธ€๊ณผ ์ฐ์€ ๊ฒŒ์‹œ๊ธ€์„ ์กฐํšŒํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŽ˜์ด์ง•์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!๋ฌผ๋ก  ์„ฑ๋Šฅ ์ธก๋ฉด๋„ ๊ณ ๋ คํ•ด๋ณด์•˜์„ ๋•Œ, ํŽ˜์ด์ง•์€ ์–ธ์  ๊ฐ€ ํ•ด์•ผ๋˜๋ฆฌ๋ผ ์ƒ๊ฐํ•˜๊ณ  ์žˆ.. 2024. 8. 3.
[Spring Data DynamoDB] ์ฟผ๋ฆฌ ์ž‘์—… ์ •๋ฆฌ 'POCHAK'์„ ๊ฐœ๋ฐœํ•˜๋ฉฐ Spring Data DynamoDB๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์•˜๊ณ ,๊ทธ ๊ณผ์ •์—์„œ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.โ€ป ์ดํ›„ ํฌ์ฐฉ์€ ์„œ๋น„์Šค ํŠน์„ฑ์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ DynamoDB์—์„œ MySQL๋กœ ๋ณ€๊ฒฝ ํ›„ ๋‹ค์‹œ ๊ฐœ๋ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค.- Spirng Data DynamoDB ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ- POCHAK GitHub Repository Query๊ตฌํ˜„ ๋ชฉํ‘œKeyConditionExpression ์ž‘๋™ ํ™•์ธํ•˜๊ธฐPK๊ฐ€ ๋™์ผํ•˜๊ณ  SK๊ฐ€ USER#๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋ถ€ ๊ฐ€์ ธ์˜ค๊ธฐ:.withKeyConditionExpression("#PK = :val1 and begins_with(#SK, :val2)")์˜ˆ์‹œ ์ฝ”๋“œPK, SK์˜ ์ด๋ฆ„๊ณผ, ๊ฐ๊ฐ ๋น„๊ตํ•  ๊ฐ’๋“ค์„ HashMap์— ์ €์žฅ์‹œํ‚ด.DynamoDBQueryExperess.. 2024. 8. 3.