[JPA]@Embedded,@Embeddable이란?

윤재열·2022년 5월 6일
0

JPA

목록 보기
10/21
post-custom-banner

JPA에서는 Entity 내부의 값을 더 응집시켜 객체로 데이터를 표현합니다.
JPA를 사용하면서 자주 보게되는 @Embedded와 @Embeddable 어노테이션을 공부해봅니다.

  • 회원가입을 생각하여 간단한 코드로 확인해 봅니다.
@Entity
@Table( name = "user")
public class User {
	
    @Id
    @GeneratedValue(strategy = GenerationType.Identify)
    @Column( name ="user_id")
    private Long id;
    private String name;
    private String phoneNum;
    
    private String zipCode;
    private String address;
    private String addressDetail;
    }
  • 위의 Entity를 보면 User의 정보중에 "주소"를 표현하는 칼럼들이 있습니다.
    여기서 "주소"라는 객체로 묶어서 관리하면 조금더 깔끔하지 않을까? 라는 생각이 들때가 있습니다.
  • 이때 여기서 사용할 수 있는 어노테이션이 @Embedded@Embeddable 어노테이션 입니다.
@Entity
@Table( name = "user")
public class User {
	
    @Id
    @GeneratedValue(strategy = GenerationType.Identify)
    @Column( name ="user_id")
    private Long id;
    private String name;
    private String phoneNum;
    
    @Embedded
    private Address address;
    }
    
@Embeddable
public class Address{
	
    private String zipCode;
    private String address;
    private String addressDetail;
    }
   
  • 이렇게 클래스를 나누어 각각 해당 어노테이션을 붙여주면 되는데 @Embedded는 생략이 가능합니다.

  • 결과 적으로 아래 사진처럼 컬럼들이 잘 생긴 것을 알 수 있습니다.

  • 정리

    • @Embeddable과 @Embeddaed를 함께 사용합니다. 클래스를 @Embeddable로 표시하면 이클래스가 DB에 별도로 테이블로 존재하지 않음을 알립니다.
    • Embeddable = 이 클래스는 클래스에 포함될 수 있다.
    • Embedded = 이클래스는 이제 클래스에 필드로 포함됩니다.

    @Embedded와 @Embededable 사용법 깃

profile
블로그 이전합니다! https://jyyoun1022.tistory.com/
post-custom-banner

0개의 댓글