Skip to content

Latest commit

ย 

History

History
32 lines (31 loc) ยท 1.6 KB

File metadata and controls

32 lines (31 loc) ยท 1.6 KB

@TypeDef

์„ค๋ช…

  • Hibernate ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ปค์Šคํ…€ ์œ ํ˜• ๋งคํ•‘์„ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
    • ๊ธฐ๋ณธ์ ์œผ๋กœ Hibernate๋Š” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ ํ˜•๊ณผ ์ž๋ฐ” ๋ฐ์ดํ„ฐ ํƒ€์ž… ๊ฐ„ ๋งคํ•‘์„ ์ œ๊ณตํ•˜๋‚˜, ๋•Œ๋•Œ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ์œ ํ˜•์„ ๋งคํ•‘ํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ด์— ์ €์žฅ๋œ ๊ฐ’์ด ํŠน์ • ํ˜•์‹์ด ์•„๋‹Œ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ํด๋ž˜์Šค๋‚˜ ์—ด๊ฑฐํ˜•์ผ ๊ฒฝ์šฐ์—๋Š” ๋งคํ•‘์„ ์ถ”๊ฐ€๋กœ ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค.
    • ์ด๋Ÿฐ ๊ฒฝ์šฐ @TypeDef ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค์Šคํ…€ ์œ ํ˜•์˜ ๋งคํ•‘์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

@TypeDef ์–ด๋…ธํ…Œ์ด์…˜ ์†์„ฑ

  • name: ์œ ํ˜• ๋งคํ•‘์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•œ๋‹ค.
  • typeClass: ๋งคํ•‘ํ•  ์œ ํ˜•์˜ ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•œ๋‹ค.
  • defaultForType: ํ•ด๋‹น ์œ ํ˜• ๋งคํ•‘์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์œ ํ˜•์„ ์ง€์ •ํ•œ๋‹ค.

์˜ˆ์‹œ 1

@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 ํƒ€์ž… ๋งคํ•‘์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.

์˜ˆ์‹œ 2

@TypeDef(name = "encryptedString", typeClass = EncryptedStringType.class, defaultForType = String.class)
public class User {
    // ...
}
  • encryptedString ์ด๋ฆ„์˜ ํƒ€์ž… ๋งคํ•‘์„ ์ •์˜ํ•˜๊ณ , EncryptedStringType ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ String ํƒ€์ž…์„ ๋งคํ•‘ํ•œ๋‹ค.
  • String ํƒ€์ž…์— ๋Œ€ํ•ด์„œ๋Š” ์ด ๋งคํ•‘์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋  ๊ฒƒ์ด๋‹ค.