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)
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();
}
'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 |