차곡차곡 성 쌓기
article thumbnail

1. 의존성 추가

build.gradle 파일에 h2, jpa 의존성을 추가한다.

dependencies {
	// ..생략
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	runtimeOnly 'com.h2database:h2'

}

 

2. 하이버네이트를 사용하여 코드 작성

본 코드에서는 Spring data JAP를 사용했다. 

 Spring data JAP의 reposity를 사용하여 DB를 호출하도록 한다.

 

  • Controller
@RequiredArgsConstructor
@RestController // HTPP Response Body에 객체 데이터를 JSON 형식으로 반환하는 컨트롤러
public class BlogApiController {

    private final BlogService blogService;

    // HTPP 메소드가 POST일 떄 전달받은 URL과 동일하면 메서드로 매핑
    @PostMapping("/api/articles")
    public ResponseEntity<Article> addArticle(@RequestBody AddArticleRequest request){
        // @RequestBody로 넘어온 데이터를 AddArticleRequest에 매핑
        Article savedArticle = blogService.save(request);

        // 요청한 자원이 성공적으로 생성되었으며 저장된 블로그 글 정보를 응답 객체에 담아 전송
        return ResponseEntity.status(HttpStatus.CREATED)
                .body(savedArticle);
    }

}
  • Service
@RequiredArgsConstructor // final이 붙거나 @NotNull이 붙은 필드의 생성자 추가
@Service // 빈으로 등록
public class BlogService {

    private final BlogRepository blogRepository;

    public Article save(AddArticleRequest request){
        return blogRepository.save(request.toEntity());
    }
}
  • Repository
import org.springframework.data.jpa.repository.JpaRepository;

public interface BlogRepository extends JpaRepository<Article, Long> {
}

 

 

 

3. application.yml 설정

application.yml 파일을 열고 아래의 내용을 추가해준다. 만약 파일이 없다면 새로 만들면 된다. 띄어쓰기에 주의해야 한다. 딱 2칸씩 띄거나 들여쓰기 간격이 일정해야 한다.

spring:
//.. 생략
  datasource:
    url: jdbc:h2:mem:testdb

  h2:
    console:
      enabled: true

 

이때 url은 h2 콘솔에 접속할 때 JDBC 주소가 된다. 

 

4. 스프링 부트 서버 실행

main()을 실행시켜 서버를 실행한다. 서버에 요청을 보내기 위해 postmn을 사용하였다. 

Post 방식으로 BODY에 데이터를 넣어 DB 작업을 수행하는 요청을 보내봤다.

 

결과로 아래쪽에 DB에 저장된 결과가 보여졌다.

 

'http://localhost:8080/h2-console/' 을 입력하면 하이버네이트의 콘솔 창으로 이동할 수 있다. 이때 application.yml 파일에 적은 url를 JDBD URL에 접은 후 connect를 눌러 접속한다.

 

콘솔 창에 원하는 쿼리를 날려 조회해보면 잘 저장되어 있는 것을 확인할 수 있다! 저장된 정보는 서버가 중단되면 모두 없어지니 주의해야한다.

 


++ 글을 쓰다보니 하이버네이트와 Spring JPA의 차이가 뭔지 몰라서 찾아봤다.

 

하이버네이트 JPA를 구현한 구현체이고, Spring Data JPA JPA에 대한 데이터 접근의 추상화이다.

 

Spring Data JPA는 Spring에서 제공하는 모듈 중 하나로 JPA를 쉽고 편하게 사용할 수 있도록 도와준다.

 

기존에 JAP를 사용하려면 EntityManager를 주입받아 사용해야 하지만, Spring Data JPA는 JPA를 한 단계 더 추상화 시킨 Repository 인터페이스를 제공한다.

 

항상 하이버네이트와 같은 JPA 구현체가 필요하다. 

이때 JPA 자바 ORM(Object Relational Mapping) 기술에 대한 API 표준 명세를 의미한다. JPA는 특정 기능을 하는 라이브러리가 아니고, ORM을 사용하기 위한 인터페이스를 모아둔 것이다. 

 

JPA를 사용하기 위해서는 JPA를 구현한 Hibernate, EclipseLink, DataNucleus 같은 ORM 프레임워크를 사용해야 한다.

 

 

 

참고

https://dev-coco.tistory.com/74

 

[JPA] JPA와 Hibernate 그리고 Spring Data JPA

1. JPA(Java Persistent API)란? JPA란 자바 ORM(Object Relational Mapping) 기술에 대한 API 표준 명세를 의미합니다. JPA는 특정 기능을 하는 라이브러리가 아니고, ORM을 사용하기 위한 인터페이스를 모아둔 것입

dev-coco.tistory.com

 

728x90

'스프링 부트' 카테고리의 다른 글

[Spring] SOLID 원칙을 지켜보자  (1) 2024.03.26
스프링 : 빈 등록하기  (0) 2023.12.14
profile

차곡차곡 성 쌓기

@nagrang

포스팅이 좋았다면 "좋아요" 해주세요!