개요
hateoas에 대해 관심을 갖고 찾던 중 spring-data-rest와 spring-data-jpa로 간단하게 crud가 가능하다는 것을 알게 되었다. (hateoas도 적용된다)
그래서 어떤것인지 확인해 보기 위해 간단하게 살펴 보았고 그 내용을 공유한다.
레이어가 간단하다.
controller와 service 레이어가 없다.
entity와 repository만으로 rest api가 생성된다.!
이 두개만 있으면 끝이다.
소스도 간단하다
package com.byeongukchoi.springdatarestexample.domain;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.time.ZonedDateTime;
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Post {
@Id
@GeneratedValue
private Long id;
private String subject;
private String content;
@CreationTimestamp
private ZonedDateTime createdDateTime;
@UpdateTimestamp
private ZonedDateTime updatedDateTime;
}
package com.byeongukchoi.springdatarestexample.repository;
import com.byeongukchoi.springdatarestexample.domain.Post;
import org.springframework.data.jpa.repository.JpaRepository;
public interface PostRepository extends JpaRepository<Post, Long> {
}
엔티티 클래스의 속성만 만들어 주면 crud가 가능한 것이다.
HATEOAS가 적용이 된다.
이벤트 처리
api 요청에 대하여 엔티티 처리 과정중 이벤트들이 발생한다.
이 이벤트들을 재정의 하여 수정 할 수 있다.
예를들어 게시글 삭제시 제약조건을 건다거나 할 수 있다.
마무리
마치 파이썬의 장고처럼 스프링으로 간단하게 웹어플리케이션을 구동한 것 같다.
마지막으로 라이브 코딩 영상
www.youtube.com/watch?v=Ow3Sb_le1Ng
예제 소스는 아래 깃허브에 있습니다.
github.com/ByeongUkChoi/blog-code/tree/main/spring-data-rest-example
많은 도움을 받은 참조 글
penpen.tistory.com/entry/Spring-Data-JPA-REST
반응형
'공부 > Spring' 카테고리의 다른 글
Spring @Profile 로 환경에 따라 다르게 설정하기 (+ @ActiveProfiles 로 테스트 하기) (0) | 2021.01.08 |
---|---|
Spring boot test 경로가 다른 패키지 테스트 시 오류 (6) | 2021.01.07 |
옵셔널(optional)과 람다(lambda)를 이용하여 JpaRepository에서 예외 처리하기 (0) | 2020.11.17 |
Spring boot와 MySQL을 Docker 컨테이너로 올리기 (0) | 2020.08.22 |
스프링 프레임워크 어노테이션 기반 의존성 주입 (@Autowired, @Resource, @Inject) (0) | 2020.03.08 |