Java/Spring

스프링 스터디(2주차) + 내용 정리

SeungbeomKim 2022. 7. 12. 17:12
반응형

2️⃣주차 배운 내용

  • 스프링에서 데이터베이스를 다루는 방법
  • DB, Domain, Repository, Service, Controller
  • yml 파일 과 properties 파일의 차이점
  • 컴퓨터끼리의 통신 언어(XML, JSON의 구조)
  • GET, POST, PUT, DELETE 요청
  • MVC 패턴을 이용한 CRUD 게시판 생성 #1

properties 와 yml 파일 구조 및 장단점

#Application.properties 
Spring-datasource-url = ""
Spring-datasource-username = ""
Spirng-datasource-password=""

#Application.yml 

server : 8080
Spring
	Datasource :
    	url: jdbc:mysql://localhost:3306/mentoring?serverTimezone=UTC
    	username: ""
    	password: ""
    	driver-class-name: com.mysql.cj.jdbc.Driver
        ~~

//properties방식은 key-value값을 지니며 외부구성의 속성을 결정
//yml방식은 계층구조 방식이며 값을 지정할 수 있음과 더불어 prefix의 중복제거 가능

이들은 스프링부트와 데이터베이스를 연결하기 위한 파일이다.

JSON과 XML 언어의 차이

#XML = <Dataset>데이터</Dataset>


#JSON =
  {
    "Dataset" : "데이터",
    "Dataset2" : "데이터2"
  } 

//JSON 데이터가 XML 데이터보다 더 빨리 읽기,쓰기가 가능하다.
//JSON 데이터는 배열을 사용할 수 있지만, XML 데이터는 그렇지 않다.
//XML 데이터는 태그를 주로 사용한다.
//이들은 데이터를 교환 및 저장하기 위한 언어이다.

RestAPI와 GET, POST, PUT, DELETE


RestAPI : JSON언어를 기반으로 백엔드 서버 구축
HTTP Method(클라이언트와 서버가 통신을 하기 위함)의 일부 
GET: DB에서 데이터를 가져올 때 사용(조회) READ
POST: DB에서 데이터를 저장할 때 사용(저장) CREATE
PUT: DB에서 기존 데이터를 꺼내고, 데이터를 수정할 때 사용(수정) UPDATE
DELETE: DB에서 데이터를 지울 때 사용된다.(삭제) DELETE
CRUD에서 조회는 GET, 저장은 POST, 수정은 PUT, 삭제는 DELETE를 사용한다.

controller, service, repository, entity

package : controller,     service,     entity,  	repository
	   ↕↕↕		   ↕↕↕↕		 ↕↕↕↕		 ↕↕↕
			
file :  BoardController, Boardservice , Board , 	Boardrepository

BoardController

package com.example.mentoring.controller;


import com.example.mentoring.service.BoardService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;


@RestController //RestAPI 서버
@RequiredArgsConstructor //생성자

public class BoardController {
    private final BoardService boardService;
    //게시글 전체 조회
    @GetMapping("/api/boards")
    public ResponseEntity<?> findAllBoard()
    {
        return new ResponseEntity<>(BoardService.findAll(), HttpStatus.OK );
    }
    //게시글 단건 조회(일부조회)
    @GetMapping("/api/boards/{id}")
    public ResponseEntity<?> findBoard(@PathVariable("id") int id){
        return new ResponseEntity<>(boardService.findBoard(id), HttpStatus.OK);
    }
    //게시글 작성
    @PostMapping("/api/boards")
    public ResponseEntity<?> writeBoard(@RequestBody Board board){
        return new ResponseEntity<>(boardService.writeBoard(board),HttpStatus.CREATED);
    }
    //게시글 삭제
    @DeleteMapping("/api/boards/{id}")
    public ResponseEntity<?> deleteBoard(@PathVariable int id){
        boardService.deleteBoard(id);
        return new ResponseEntity<>("게시글 삭제 완료",HttpStatus.OK);
    }
}

 

반응형