공부/Spring

Spring Data Rest 알아보기

2020. 11. 20. 18:09

개요

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

 

많은 도움을 받은 참조 글

papababo.tistory.com/289

penpen.tistory.com/entry/Spring-Data-JPA-REST

 

 

 

반응형