์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- redis ํ ์คํธ์ฝ๋
- aws ์ฟ ํฐ
- AWS Certified Solutions Architect - Associate
- ์ ํจ์ค ๋น๋ ์ค๋ฅ
- @RestControllerAdvice
- ์๋ฒ ํฐ์ง๋ ๋์ปค ์ฌ์คํ
- ์๋ฐ
- prod docker-compose
- docker-compose kafka
- ์คํํ๋ ๋ฏธ์ค
- docker ps -a
- Entity
- ํ๋ก๊ทธ๋๋จธ์ค
- ํ๋ก๊ทธ๋๋จธ์ค ์ปฌ๋ฌ๋ง๋ถ
- ์ ํจ์ค ์ค์ผ์ค๋ฌ
- Kafka
- redis ์กฐํ
- s3 ์ด๋ฏธ์ง ์ ์ฅ
- ๋ค์ค ์ปจํ ์ด๋
- docker
- Codedeploy ์ค๋ฅ
- ํ๋ก๊ทธ๋๋จธ์ค ํฉ์นํ์์๊ธ
- aws saa ํฉ๊ฒฉ
- docker compose
- nGrinder
- private subnet ec2 ๋ก์ปฌ ์ ์
- ํ์ดํผ๋ฐ์ด์
- JPA
- s3 ์ด๋ฏธ์ง ๋ค์ด๋ก๋
- s3 log ์ ์ฅ
- Today
- Total
๐๐ข๐๐ โ๐๐๐ ๐๐๐ก๐๐ ๐๐๐๐โง
[JPA] @Enumerated, @Converter ๋ณธ๋ฌธ
[JPA] @Enumerated, @Converter
๐คRyusun๐ค 2023. 8. 26. 17:10@Enumerated
์๋ฐ enum ํ์ ์@Enumerated ์ ๋ ธํ ์ด์ ์ ํตํด ์ํฐํฐ ๋งคํํ ์ ์๋ค.
@Enumerated ์ด๋
ธํ
์ด์
์๋
- EnumType.ORIGINAL : enum ์์(์ซ์) ๊ฐ์ DB์ ์ ์ฅ
- EnumType.STRING: enum ์ด๋ฆ ๊ฐ์ DB์ ์ ์ฅ
๋๊ฐ์ง ํ์ ์ด ์๋ค.
์๋ก ๋ค์ด,
@AllArgsConstructor
public enum UserRole {
ROLE_ADMIN("๊ด๋ฆฌ์"),
ROLE_USER("ํ์");
private final String description;
}
@Column(nullable = false)
@Enumerated(EnumType.ORDINAL)
private UserRole roles;
ํด๋น enum์ ORIDINAL๋ก ์ง์ ํ๊ณ role์์ฑ์ ๊ฐ๊ฐ ์ค์ ํ๋ฉด DB์
ROLE_ADMIN์ 1 ๋ก ์ ์ฅ๋๊ณ
ROLE_USER์ 2 ๋ก ์ ์ฅ๋๋ค.
STRINGํ์
์ผ๋ก ์ง์ ํ๋ฉด "ROLE_ADMIN", "ROLE_USER" ๋ฌธ์์ด๋ก ์ ์ฅ๋๋ค.
ํ์ง๋ง ORDINAL๋ก ์ค์ ํ enum๊ฐ๋ค์ ์์๊ฐ ๋ณ๊ฒฝ๋๋ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์๋ชป ์ฝ์ด์ค๋ ๋ฌธ์ ๊ฐ ์๊ธธ์๋ ์์ผ๋ฉฐ,
STRING ์ค์ ์ ๋์ค์ ๋ฌธ์์ด์ด ๋ฐ๋๋ฉด ๋ง๋ ๊ฐ์ด ์์ด์ DB์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ๋ ์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค. ๋ํ ๋ฌธ์์ด ์์ฒด๊ฐ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ DB ๊ณต๊ฐ ๋ญ๋น๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฅผ ๋์ฒดํ ์ ์๋ ์ข์ ๋ฐฉ๋ฒ์ converter ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
Attribute Converter
Attribute Converter๋ Entity์ DB์ฌ์ด์์ ์์ฑ์ ๋ณํ์ ๋ด๋นํ๋ค.
์๋ก ๋ค์ด ์ฑ๋ณ (gender)์ DB์ 'w', 'm'์ผ๋ก ์ ์ฅํ๊ณ ์ถ์๋๋ ์ํฐํฐ์๋ boolean, ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ YN ๊ฐ์ ์ ์ฅํ๊ณ ์ถ์๋ ์ฌ์ฉํ๋ค.
๋ช ์ธ์ ์๋ ์ฒซ ๋ฒ์งธ ์ ๋ค๋ฆญ X๋ Entity์ Field ์๋ฃํ, ๋ ๋ฒ์งธ ์ ๋ค๋ฆญ Y๋ Database Column ์๋ฃํ์ ๋ํ๋ธ๋ค. ๊ตฌํ์ ๊ฐ๋จํ๋ฐ 2๊ฐ์ ๋ฉ์๋ convertToDatabaseColumn์ convertToEntityAttribute๋ฅผ ๊ตฌํํจ์ผ๋ก์จ Converter๋ฅผ ๋ง๋ค ์ ์๋ค.
@Converter
public class UserRoleTypeConverter implements AttributeConverter<UserRole, Integer> {
@Override
public Integer convertToDatabaseColumn(UserRole attribute) {
if (attribute == null) return null;
return (attribute == ROLE_ADMIN) ? 0 : 1;
}
@Override
public UserRole convertToEntityAttribute(Integer dbData) {
if (dbData == null) return null;
return (dbData == 0) ? ROLE_ADMIN : ROLE_USER;
}
ํ์๋ UserRole์ Enumํ์ ์ DB์ Integer๋ก ์ ์ฅํ๋ คํ๋ค.
์ด๋ ๊ฒ ๊ตฌํํ Converter์ JPA์ ๋งคํ ํด๋์ค์์ @Convert ์ ๋ ธํ ์ด์ ์ ์ฌ์ฉํด์ ๊ฐ์ ๋ณํ๋์ ํ๋กํผํฐ์ ์ปจ๋ฒํฐ๋ฅผ ์ง์ ํด์ฃผ๋ฉด ๋๋ค.
@Column(nullable = false)
@Convert(converter = UserRoleTypeConverter.class)
private UserRole roles;
ํ์ง๋ง @Converter๋ฅผ ์ธ๋ ์ฃผ์ํ ์ ์ด ์๋๋ฐ ์๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ข์๊ฒ๊ฐ๋ค.
JPA์ AttributeConverter๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์
AttributeConverter๋ ์ปค์คํ ํ Value Object๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ฑฐ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๊ฐ์ ์ปค์คํ ํ Value Object๋ก ์๋ ๋ณํ์ ์ํด์ ์ฌ์ฉํ๋ค.
msolo021015.medium.com
์ฐธ๊ณ
- https://rachel0115.tistory.com/entry/JPA-JPA-AttributeConverter%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C-%EA%B0%92%EC%9D%84-%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0?category=1129692
- https://small-stap.tistory.com/87
'๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ด๐ป > ๐๐ฉ๐ซ๐ข๐ง๐ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ์ฑ๋ฅ ์ต์ ํ 1ํธ - ๋ถํํ ์คํธ ngrinder ์ค์นํ๊ธฐ (0) | 2024.03.09 |
---|---|
[Spring] DTO ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํด์ผํ ๊น (0) | 2024.03.08 |
[Spring] QueryDSL ๋ฌธ๋ฒ (0) | 2023.07.20 |
[Spring] QueryDSL (0) | 2023.07.18 |
[Spring] ์์ธ ์ฒ๋ฆฌ (0) | 2023.06.30 |