Spring JPA [활용] Entity 클래스 개발

신재원·2023년 1월 15일
1

Spring JPA 활용

목록 보기
1/18

1 대 N 관계일 경우

  • N쪽이 연관관계주인 (비즈니스적으로 주인은 중요한게 아님)
  • 'N' 의 Entity 클래스에서 '1'의 클래스 선언, @ManyToOne 사용후, @JoinColum (name = "1의 Entity 클래스의 Pk ColumName명")
  • "1"의 Entity 클래스에서 List<>로 선언하고 @OneToMany (mappedby = "필드값")
    • mappedby = 거울이라고 생각하면 편하다.

1대1일 관계일 경우

각각 Entity 클래스에서 @OneToOne 선언후 연관 관계 주인을 정해야 한다.

  • 두 Entity 클래스중 연관관계 주인은 1대1 관계임으로 연관 관계 주인은 아무나 상관없다, 정한후 1대N일 경우랑 똑같이 구현한다.
    • 주인으로 정한쪽에 @JoinColum, 아닌쪽을 mappedby = 해준다.

@Embeddable

  • 가독성을 높이기 위해 "주소"의 하위느낌이나는 필드를 한 클래스에 모아주었다.
@Embeddable (!! 기본생성자 필수)
public class Address {
	private String address1;
	private String city;
	private String street;
    
    protected Address() {
    }
    public Address(String city, String street, String zipcode) {
        this.city = city;
        this.street = street;
        this.zipcode = zipcode;
    }
}
사용할때
@Embedded (표시하여 내장 되어있다고 보여줌(생략해도되지만 표시하는걸 권장)
prviate Address address;

Entity 클래스에서 Enum 타입을 사용해야될 경우

  • 메소드에 @Enumerated 선언후
    • "EnumType.ORDINAL" 이 default값인데, 중간에 [READY,XXX,COMP]같이 다른 값이 들어오게되면 COMP값(index값)이 밀리게되어 !! 사용하면안된다. (순서가 꼬이게 된다.)
    • (권장) : EnumType.STRING은 enum의 name 즉 값이 그대로 들어간다.(자주 사용)

0개의 댓글