[JPA]REST API 만들기

2022. 3. 1. 22:06JAVA

반응형

SPRING BOOT 사용하여 간단한 REST API 생성 및 작동 확인

 

  1. spring boot 프로젝트 생성
  2. 그레들 의존성 추가
  3. 데이터 베이스 설정
  4. Entity, Repository, Controller 생성
  5. PostMan을 활용한 테스트

 

spring boot 프로젝트 생성

Spring Initializr

사이트에서 

자신에게 맞는 자바 버전 확인 및 그래들을 이요할 것이므로 그래들 프로젝트 형식 선택.

 

Generate 하여 생성해주고 압축파일을 해제하여 프로젝트 실행

 

그레들 의존성 추가
dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-web'
   compileOnly 'org.projectlombok:lombok'
   developmentOnly 'org.springframework.boot:spring-boot-devtools'
   annotationProcessor 'org.projectlombok:lombok'
   testImplementation 'org.springframework.boot:spring-boot-starter-test'
   implementation 'mysql:mysql-connector-java'
   implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}

getter setter 편하게 이용하기 위한 Lombok 과  mysql 커넥터, jpa 를 의존성 추가. 

 

데이터베이스 설정

src 및의 리소스 폴더 및에 프로퍼티로 들어가서

# JDBC 설정
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# DB 주소설정
spring.datasource.url=주소

# DB 아이디
spring.datasource.username=아이디

# DB 비밀번호
spring.datasource.password=비밀번호

# DDL(create, alter, drop) 테이블 자동생성을 위하여 사용.
spring.jpa.hibernate.ddl-auto=update

# 모든 쿼리문 보기
spring.jpa.properties.hibernate.show-sql=true

# 쿼리문 정렬 
spring.jpa.properties.hibernate.format_sql=true

설정값을 저장해 준다.

 

Entity, Repository, Controller 생성

 

간단하게 이름, 나이, 생성날짜가 포함된 회원 정보를 저장 및 출력 가능한 API의 작성 예시

 

먼저 Entity에 

package com.example.demo.entity;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;

@Getter
@Setter
@Entity
@Table
//@Table(name = "이름 지정 가능")
public class User {

    @Id // 기본키
    @GeneratedValue(strategy = GenerationType.IDENTITY) // mysql의 auto_increment 기능
    private Long id;

    @Column(length = 10, nullable = false) // 10글자 제한, not null
    private String name;

    @Column(nullable = false) // not null
    private Integer age;

    @Column(nullable = false) // not null
    private String createTime;

}

테이블 구조를 작성해주고,

 

package com.example.demo.repository;

import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

 

repository는 JpaRepository를 상속받아 사용.

 

그리고 컨트롤러는

package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.lib.MyLibrary;
import com.example.demo.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/user")
@RequiredArgsConstructor
public class UserController {

    private final UserRepository userRepository;

    //Create
    @PostMapping("/create")
    public ResponseEntity<?> createUser(User user){
        user.setCreateTime(new MyLibrary().getDateTime());
        return ResponseEntity.ok(userRepository.save(user));
    }

    //ReadAll
    @GetMapping("/list")
    public List<User> readAll(){
        return userRepository.findAll();
    }

    //Read
    @GetMapping("/list/{id}")
    public User readUser(@PathVariable Long id) throws IllegalAccessException {
        return userRepository.findById(id)
                .orElseThrow(() -> new IllegalAccessException());
    }

    //Update
    @PutMapping("/{id}")
    public void updateUser(@PathVariable Long id, Integer age){
        userRepository.findById(id)
                .map(user -> {
                        user.setAge(age);
                    return userRepository.save(user);
                });
    }

    //Delete
    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id){
        userRepository.deleteById(id);
    }

}

이렇게 작성하였다.

 

테스트

PostMan을 이용한 REST API테스트, 

Download Postman | Get Started for Free

 

Download Postman | Get Started for Free

Try Postman for free! Join 17 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.

www.postman.com

자바스크립트로 코드를 짜지 않더라도 테스트가 가능하여 REST API 테스트를 위해 설치 하는 것이 편함. 

 

1.CREATE

2-1)READ - LIST

리퀘스트 타입을 바꿔주지 않으면 에러가 난다.

 

2 -2)READ ONE

3. UPDATE

그리고 읽기

 

4) DELETE

완료.

 

+++

 

 public String getDateTime(){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM/dd HH:mm:ss");
        Calendar calendar = Calendar.getInstance();
        return simpleDateFormat.format(calendar.getTime());
}

생성 시간을 가져오기 위한 메소드는 개인 라이브러리로 만들어 사용.

'JAVA' 카테고리의 다른 글

[spring boot]이미지 업로드  (0) 2022.03.21
추상 클래스와 인터페이스  (0) 2022.03.14
OracleDB - JAVA  (0) 2021.09.22
<Maven 라이브러리> apache.poi 이용해서 엑셀 파일 읽어오기  (0) 2021.09.14