스프링 데이터 JPA-15.HATEOAS, Common 마무리(스프링 데이터 Common:Web)
스프링 데이터 Common: Web 4부: HATEOAS
Page를 PagedResource로 변환하기
- 일단 HATEOAS 의존성 추가 (starter-hateoas)
- 핸들러 매개변수로 PagedResourcesAssembler
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
추후 Rest Api 에서 더 자세하게 정리
리소스로 변환하기 전
{
"content":[
...
{
"id":111,
"title":"jpa",
"created":null
}
],
"pageable":{
"sort":{
"sorted":true,
"unsorted":false
},
"offset":20,
"pageSize":10,
"pageNumber":2,
"unpaged":false,
"paged":true
},
"totalElements":200,
"totalPages":20,
"last":false,
"size":10,
"number":2,
"first":false,
"numberOfElements":10,
"sort":{
"sorted":true,
"unsorted":false
}
}
리소스로 변환한 뒤
{
"_embedded":{
"postList":[
{
"id":140,
"title":"jpa",
"created":null
},
...
{
"id":109,
"title":"jpa",
"created":null
}
]
},
"_links":{
"first":{
"href":"http://localhost/posts?page=0&size=10&sort=created,desc&sort=title,asc"
},
"prev":{
"href":"http://localhost/posts?page=1&size=10&sort=created,desc&sort=title,asc"
},
"self":{
"href":"http://localhost/posts?page=2&size=10&sort=created,desc&sort=title,asc"
},
"next":{
"href":"http://localhost/posts?page=3&size=10&sort=created,desc&sort=title,asc"
},
"last":{
"href":"http://localhost/posts?page=19&size=10&sort=created,desc&sort=title,asc"
}
},
"page":{
"size":10,
"totalElements":200,
"totalPages":20,
"number":2
}
}
링크 이름만 가지고 활용이 가능하다.
스프링 데이터 Common: 마무리
지금까지 살펴본 내용
- 스프링 데이터 Repository
- 쿼리 메소드
- 메소드 이름 보고 만들기
- 메소드 이름 보고 찾기
- Repository 정의하기
- 내가 쓰고 싶은 메소드만 골라서 만들기
- Null 처리 -쿼리 메소드 정의하는 방법 -리포지토리 커스터마이징
- 리포지토리 하나 커스터마이징
- 모든 리포지토리의 베이스 커스터마이징
- 도메인 이벤트 Publish
- 스프링 데이터 확장 기능
- QueryDSL 연동
- 웹 지원