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 적용해보겠습니다.
클래스 조합은 아래참조
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();
}
'Web개발 > JPA' 카테고리의 다른 글
Dynamic Projection & Response 에서 hateoas 정보삭제 (0) | 2021.04.30 |
---|---|
Spring data rest is Null 이나 is Not null (0) | 2021.04.21 |
JPA 로 프로젝트 하면서 느낀점 (0) | 2021.03.15 |
JPA 다대다 관계 풀기(1) (0) | 2021.03.14 |
JPA Join 관련 Annotation @NamedEntityGraph , @EntityGraph , FetchType (0) | 2021.03.10 |