Hibernate ์์ ์ฌ์ฉํ๋ ์ปค์คํ
์ ํ ๋งคํ์ ์ ์ํ ๋ ์ฌ์ฉํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Hibernate๋ ๋ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ๊ณผ ์๋ฐ ๋ฐ์ดํฐ ํ์
๊ฐ ๋งคํ์ ์ ๊ณตํ๋, ๋๋๋ก ์ฌ์ฉ์ ์ ์ ์ ํ์ ๋งคํํด์ผ ํ ๋๊ฐ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด์ ์ ์ฅ๋ ๊ฐ์ด ํน์ ํ์์ด ์๋ ์ฌ์ฉ์๊ฐ ์ ์ํ ํด๋์ค๋ ์ด๊ฑฐํ ์ผ ๊ฒฝ์ฐ์๋ ๋งคํ์ ์ถ๊ฐ๋ก ์ ์ํด์ผ ํ๋ค.
์ด๋ฐ ๊ฒฝ์ฐ @TypeDef ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ์ฌ ์ปค์คํ
์ ํ์ ๋งคํ์ ์ ์ํ ์ ์๋ค.
@TypeDef ์ด๋
ธํ
์ด์
์์ฑ
name: ์ ํ ๋งคํ์ ์ด๋ฆ์ ์ง์ ํ๋ค.
typeClass: ๋งคํํ ์ ํ์ ํด๋์ค๋ฅผ ์ง์ ํ๋ค.
defaultForType: ํด๋น ์ ํ ๋งคํ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋ ์ ํ์ ์ง์ ํ๋ค.
@ TypeDef (name = "json" , typeClass = JsonType .class )
public class Domain {
// ...
@ Type (type = "json" )
@ Column (name = "value" , columnDefinitions = "longtext" )
private Map <String , Object > value = new HashMap <String , Object >();
}
JsonType ํด๋์ค๋ฅผ ์ด์ฉํ์ฌ Json ํ์
์ผ๋ก ๋งคํ
value ๋ผ๋ ์ปฌ๋ผ์ ํด๋น json ํ์
๋งคํ์ ์ฌ์ฉํ๋๋ก ํ๋ค.
@ TypeDef (name = "encryptedString" , typeClass = EncryptedStringType .class , defaultForType = String .class )
public class User {
// ...
}
encryptedString ์ด๋ฆ์ ํ์
๋งคํ์ ์ ์ํ๊ณ , EncryptedStringType ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ String ํ์
์ ๋งคํํ๋ค.
String ํ์
์ ๋ํด์๋ ์ด ๋งคํ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋ ๊ฒ์ด๋ค.