Projection 언제사용하나요?

> Spring data jpa 사용시 Reponse 항목에서 모두보여주고 싶지 않을때 사용한다.

 

어떻게 사용하나요?

>

1. 인터페이스 생성

2. @Projection 어노테이션

3. name 설정(interface 이름과 동일하게 하는게 가독성이 좋을듯싶다.)

4. types = "jpa Entity 클래스명"

5. 내가 보여주고싶은 항목의 getter 메소드 선언

@Projection(name="membersWithOrganizationProjection", types = { Member.class })
public interface MembersWithOrganizationProjection {

    Long getId();

    String getKoreanName();
    
 }

Member 를 REST API 사용시 : localhost:8080/members?projection=membersWithOrganizationProjection

 

Member 안 필드에 다른 오브젝트가 있는데 그 오브젝트안에 있는 필드도 프로젝션이 가능한가요?

 

Member - OrganizationMember - Organization 조인관계에서 세개의 오브젝트에서 Projection 적용해보겠습니다.

 

클래스 조합은 아래참조

참조 : JPA 다대다 관계 풀기(1)

 

JPA 다대다 관계 풀기(1)

1장에서는 엔티티 정보에 선언에 대해 알아볼 것이다. 아래는 클래스 다이어그램, ERD 구성이다. 예시) Organization(조직)- OrganizationMember(조직멤버 구성정보) - Member(구성원:조직에는 N명의 멤버들이

endless-learn-code.tistory.com

MembersWithOrganizationProjection - OrganizationMemberProjection - OrganizationProjection 

@Projection(name="membersWithOrganizationProjection", types = { Member.class })
public interface MembersWithOrganizationProjection {

    Long getId();

    String getKoreanName();
    /* 리턴형태에 Projetion Interface 값을 추가하였습니다. */
    List<OrganizationMemberProjection> getOrganizationMembers();
 }
@Projection(name="organizationMemberProjection", types = { OrganizationMember.class })
public interface OrganizationMemberProjection {
	/** Projection Inferface 내에 메소드 리턴형태가  */
    OrganizationProjection getOrganization();

    Boolean getMainOrganization();
}
@Projection(name="organizationProjection", types = { Organization.class })
public interface OrganizationProjection {

    Long getId();

    String getOrganizationCode();

    String getKoreanName();

}

+ Recent posts