Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- component
- 캠프
- 스프링 로그
- JPA 낙관적락
- flask
- JPA Lock
- spring
- Optimistic Lock
- 스프링
- spring security
- 암호화
- Transaction isolation level
- 디자인 패턴
- JPA 비관적락
- JPA 동시성
- 안드로이드
- annotation
- Inno DB
- JPA
- spring security 인증
- 개발
- 서버
- Android
- Pessimistic Lock
- 서버개발캠프
- 스프링 log
- bean
- 스마일게이트
- 낙관적락 비관적락 차이
- Redis
Archives
- Today
- Total
모르는게 많은 개발자
[Spring] Boot와JPA(Mysql)을 이용한 Rest API 간단 예제 본문
반응형
Spring Boot를 이용해 간단 Rest API를 만들어보자.
1. Spring Starter Project 설치
2. 아래와 같이 Spring Data JPA, MySQL Driver Check
3. application.properties
src/main/resources에 보면 application.properties파일이 있다.
application.properties = spring boot 설정 파일
application.properties에 JPA, Mysql을 설정해야한다.
아래와 같이 입력후 저장.
#spring boot 서버 주소와 포트 입력
server.address=localhost
server.port=1234
#콘솔에 SQL문을 출력해줄지 말지 결정
spring.jpa.show-sql=true
#DDL 데이터베이스 기능 사용
spring.jpa.generate-ddl=true
#Mysql
spring.jpa.database=mysql
#DBNAME = db이름, username, password입력
spring.datasource.url=jdbc:mysql://localhost:3306/DBNAME?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=(username)
spring.datasource.password=(password)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
4. Entity 작성
데이터를 저장할 Entity클래스를 정의하자
※ 주의할점은 클래스 선언시 기본 생성자를 꼭 만들어야한다. 안그러면 오류가 난다.
class이름과 DB table이름을 맞춰야 한다. 만약 이름이 다르면 @Table(name="테이블 이름")어노테이션을 이용해 매핑해줘야한다.
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Entity
public class Board {
@Id @GeneratedValue
private Long id;
private String age;
private String name;
public Board() {
}
public Board(String name, String age) {
this.name = name;
this.age = age;
}
}
5. Repository 작성
Repository는 Spring에서 CRUD를 처리하는 인터페이스다.
아래와 같이 interface를 정의하고 아무런 기능을 구현하지 않고 CrudRepository에 구현된 기능을 모두 이용한다.
import org.springframework.data.repository.CrudRepository;
public interface BoardRepository extends CrudRepository<Board, Long>{
}
6. Controller 작성
이제 API를 처리할 Controller를 작성하자
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/board")
public class BoardController {
private BoardRepository boardRep;
@Autowired
public BoardController(BoardRepository boardRep) {
this.boardRep = boardRep;
}
//POST로 유저 추가
@PostMapping
public Board put(@RequestParam String name, @RequestParam String age) {
return boardRep.save(new Board(name, age));
}
//테이블 리스트 가져오기
@GetMapping
public Iterable<Board> list(){
return boardRep.findAll();
}
//id로 테이블 값 가져오기
@GetMapping(value = "/{id}")
public Optional<Board> findOne(@PathVariable Long id) {
return boardRep.findById(id);
}
//id로 테이블 값 수정
@PutMapping(value = "/{id}")
public Board update(@PathVariable Long id, @RequestParam String name, @RequestParam String age) {
Optional<Board> board = boardRep.findById(id);
board.get().setName(name);
board.get().setAge(age);
return boardRep.save(board.get());
}
//id로 테이블 값 삭제
@DeleteMapping
public void delete(@RequestParam Long id) {
boardRep.deleteById(id);
}
}
7. 실행
@SpringBootApplication
public class JpaApplication {
public static void main(String[] args) {
SpringApplication.run(JpaApplication.class, args);
}
}
이제 어플리케이션을 실행하면 아래와 같은 콘솔창이 띄어진다.
8. Postman을 통한 결과 확인
반응형
'스프링' 카테고리의 다른 글
[SpringBoot] spring-security 회원가입/로그인/권한 예제 (2) | 2020.10.02 |
---|---|
[JPA] 1. 영속성 컨텍스트(Persistence Context) 정리 (0) | 2020.08.17 |
[Spring] XML Configuration와 Java Configuration 비교 (0) | 2020.04.08 |
[Spring] @Component를 이용한 객체 생성 방법 (0) | 2020.04.08 |
[Spring] @Autowired @Qualifier 개념/예제 (0) | 2020.04.04 |
Comments