@Embedded, @Embeddable

Hibernate와 Spring Data JPAλŠ” @Embeddable및 @Embedded μ–΄λ…Έν…Œμ΄μ…˜κ³Ό 같은 κΈ°λŠ₯을 톡해 도메인 λ‚΄μ—μ„œ λ³΅μž‘ν•œ 관계λ₯Ό 효율적으둜 λͺ¨λΈλ§ν•  수 μžˆλ„λ‘ 방법을 μ œκ³΅ν•œλ‹€.

@Embedded와 @Embeddable

@Embedded와 @Embeddable은 JPA(Java Persistence API)μ—μ„œ μ‚¬μš©λ˜λŠ” μ• λ…Έν…Œμ΄μ…˜μœΌλ‘œ, μ—”ν‹°ν‹° 클래슀 내에 λ‹€λ₯Έ μ—”ν‹°ν‹°λ₯Ό ν¬ν•¨ν•˜λŠ” κ²½μš°μ— μ‚¬μš©λ©λ‹ˆλ‹€.

@Embeddable

  • μ—”ν‹°ν‹° ν΄λž˜μŠ€μ— 포함될 수 μžˆλŠ” κ°’ νƒ€μž… ν΄λž˜μŠ€μ— μ μš©ν•œλ‹€.

  • κ°’ νƒ€μž… ν΄λž˜μŠ€λŠ” μ—”ν‹°ν‹°μ˜ 일뢀이며 ν•¨κ»˜ μ €μž₯되고 λ‘œλ“œλœλ‹€.

  • κ°’ νƒ€μž… ν΄λž˜μŠ€λŠ” μ‹λ³„μžκ°€ μ‘΄μž¬ν•˜μ§€ μ•Šκ³ , ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜μ§€ μ•ŠλŠ”λ‹€.

@Embedded

  • μ—”ν‹°ν‹° 클래슀 내에 κ°’ νƒ€μž… 클래슀λ₯Ό ν•„λ“œμ— μ„ μ–Έν•  λ•Œ μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•΄μ„œ μ •μ˜ν•œλ‹€.

μ˜ˆμ‹œ

λ§Œμ•½ 리뷰의 νƒœκ·Έλ₯Ό λͺ¨μ•„놓은 μ—”ν‹°ν‹°κ°€ μ‘΄μž¬ν•œλ‹€.

μ—”ν‹°ν‹°λŠ” 리뷰와 νƒœκ·Έλ₯Ό κ°€μ§€κ³ μžˆλ‹€. 이 λ‘κ°€μ§€λŠ” review에 μ†ν•œ νƒœκ·Έλ“€μ„ μ•ŒκΈ° μœ„ν•œ μ»¬λŸΌμ΄λ‹€.

이 데이터듀을(리뷰, νƒœκ·Έ)λ₯Ό ν•˜λ‚˜μ˜ 객체둜 λ¬Άμ–΄ 섀계λ₯Ό ν•  수 μžˆλ‹€.

μ΄λ•Œ μ‚¬μš©ν•˜λŠ” μ–΄λ…Έν…Œμ΄μ…˜μ΄ @Embedded, @Embeddable 이닀.

μ•žμ„œ 리뷰와 νƒœκ·Έλ₯Ό ν‘œν˜„ν•˜λŠ” 2개의 데이터λ₯Ό 1개의 μ£Όμ†ŒλΌλŠ” 의미의 객체둜 ν‘œν˜„ν•˜κ²Œ 되면 가독성이 μ’‹λ‹€κ³  ν•œλ‹€.

JPA μ—”ν‹°ν‹° μ•ˆμ— μ»¬λŸΌμ„ ν•˜λ‚˜μ˜ 객체둜 μ‚¬μš©ν•˜κ³  μ‹ΆμœΌλ©΄ μœ„ μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•œλ‹€. (@Embeddable은 μƒλž΅ κ°€λŠ₯ν•˜λ‹€.)

그럼 μ΄λ ‡κ²Œ 2개의 ν•„λ“œκ°€ 생긴닀.

Last updated