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

๐ŸŒฟ Spring6

[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.
[JPA] ์˜์†ํ™” ์ˆœ์„œ ๋ณ€๊ฒฝ - Dirty Checking๊ณผ @DynamicUpdate ์‚ฌ์šฉ Dirty Checking๊ณผ ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ๋ณต์Šตํ•˜๋ฉฐ ์˜์†ํ™” ์ˆœ์„œ์— ๋Œ€ํ•ด ๊ถ๊ธˆํ–ˆ๋˜ ๊ฒƒ๋“ค, ๊ทธ๋ฆฌ๊ณ  ์‹คํ—˜ํ–ˆ๋˜ ๊ธฐ๋ก์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์˜ ๋‚ด์šฉParent Entity์™€ Child Entity๊ฐ€ 1:N์œผ๋กœ ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ๋งบ์–ด์ ธ ์žˆ์Œ. (๋”ฐ๋ผ์„œ ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ์€ Child Entity.)์ด ์ƒํƒœ์—์„œ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ๊ฒฝ์šฐ, Child child1 = new Child();child1.setName("child1");Child child2 = new Child();child2.setName("child1");Parent parent = new Parent();parent.setName("Parent1");parent.addChild(child1);parent.addChild(child2);em.persist(paren.. 2024. 6. 7.