[๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ปTA9 ์ธํ„ด 17์ผ์ฐจ]Spring boot ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ

Goofiยท2023๋…„ 8์›” 3์ผ
0

controller ํด๋”

@GetMapping(), @RespnseBody

@GetMapping("/")
@ResponseBody
public String main(){
    return "Hello world";
}

GetMapping("/") ์€ ์–ด๋–ค URL๋กœ ์ ‘๊ทผํ• ๊ฑด์ง€ ์ง€์ •ํ•ด์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค.
@responseBody๋Š” ์„ค์ •ํ•œ GetMapping("/")์— ์ ‘์†(localhost:8080)์— ์ ‘์†ํ–ˆ์„ ๋•Œ return์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์„ ํ™”๋ฉด์— ๋„์–ด์ค„ ์ˆ˜ ์žˆ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค.

DB์—ฐ๊ฒฐ(MySql)

application.properties

server.port=8090

spring.jpa.hibernate.ddl-auto=update
spring.datasource.driverClassName=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/board
spring.datasource.username=root
spring.datasource.password=nanoqu12!!

@PostMapping()

Post์š”์ฒญ์‹œ ์‚ฌ์šฉํ•œ๋‹ค.

<form action="/board/writepro" method="post">
    <input name="title" type="text">
    <textarea name="content"></textarea>
	<button type="submit">์ž‘์„ฑ</button>
</form>
@PostMapping("/board/writepro")
public String boardWritePro(Board board){
//System.out.println(board.getTitle());
// board์—์„œ ์„ ์–ธํ•œ title๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
	boardService.write(board);
	return "";
}

form์—์„œ ์ ์€action:"url"๋ž‘ @PostMapping(url)์—์„œ ์„ค์ •ํ•œ URL์ด๋ž‘ ๋งค์นญ๋˜์•ผ ํ•œ๋‹ค.

entity ํด๋”

entityํด๋”์— Boardํด๋ž˜์Šค๋Š” DBํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„๊ณผ ์ผ์น˜์‹œ์ผœ์ฃผ๋Š”๊ฒŒ ์ข‹๋‹ค.

package com.study.board.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Data;

@Entity
@Data
public class Board {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String title;

    private String content;
}

์ด๋ ‡๊ฒŒ Entity๋ผ๊ณ  ํ•˜๋ฉด JPA๊ฐ€ Board ํ…Œ์ด๋ธ”์— ๊ด€๋ จํ•œ ์„ค์ •์ด๊ตฌ๋‚˜ ํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค€๋‹ค.

@Entity

  • Entity๋Š” DB์— ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ์˜๋ฏธํ•œ๋‹ค.
    JPA๋ฅผ ์‚ฌ์šฉํ•ด ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘ํ•  ํด๋ž˜์Šค์— ๋ถ™์—ฌ์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค. ์ด ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ถ™์ž„์œผ๋กœ์จ JPA๊ฐ€ ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.

@Id

Primary ํ‚ค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค(PK)์™€ ๊ฐ์ฒด์˜ ํ•„๋“œ๋ฅผ ๋งคํ•‘์‹œ์ผœ์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ž…๋‹ˆ๋‹ค.

  • @Id์–ด๋…ธํ…Œ์ด์…˜๋งŒ ์ ๊ฒŒ๋  ๊ฒฝ์šฐ ๊ธฐ๋ณธํ‚ค๊ฐ’์„ ์ง์ ‘ ๋ถ€์—ฌํ•ด์ค˜์•ผ ํ•œ๋‹ค.
  • ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ง์ ‘ ํ• ๋‹นํ•˜๋Š” ๋Œ€์‹  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด @GeneratedValue๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

@GeneratedValue

@GeneratedValue(strategy = GenerationType.IDENTITY)
IDENTITY๋Š” mySql์€ mariadb์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

@GeneratedValue(strategy = GenerationType.SEQUENCE)
์˜ค๋ผํด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

@GeneratedValue(strategy = GenerationType.AUTO)
์ž๋™์ง€์ •

์ฆ‰, ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ž๋™ ์ƒ์„ฑํ•ด์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ž…๋‹ˆ๋‹ค.


repository ํด๋”

DB์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” repository ํด๋”๊ฐ€ ํ•„์š”ํ•˜๋‹ค.


Formํƒœ๊ทธ์—์„œ์˜ ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๋ฅผ Controller์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

boardwrite.html

<form action="/board/writepro" method="post">
	<input name="title" type="text">
	<textarea name="content"></textarea>
	<button type="submit">์ž‘์„ฑ</button>
</form>

BoardController.java

@Controller
public class BoardController{
	@PostMapping("/board/writepro")
    public String boardWritePro(String title, String content){
    	
        return "";
    }
}

form ํƒœ๊ทธ ์•ˆ์— input, textarea์˜ name์ด Controller์— ์žˆ๋Š” String title, String content ์•ˆ์— ๋“ค์–ด๊ฐ„๋‹ค.

ํ•˜์ง€๋งŒ,

์ด๊ฒŒ ๋งŽ์•„์ง€๋‹ค๋ณด๋ฉด ๋ฐ›์•„์ง€๊ธฐ๊ฐ€ ๊ท€์ฐฎ์•„์ง„๋‹ค.
๊ทธ๋ž˜์„œ Board๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ  Entity๋ฅผ ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ @Data ์–ด๋…ธํ…Œ์ด์…˜์„ ์ž…๋ ฅํ•ด์ค˜์•ผ ํ•œ๋‹ค.

repository ํด๋”

@Service๋Š” ์„œ๋น„์Šค๋ผ๊ณ  ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
BoardService.java

public class BoardService{
	@Autowired
    private BoardRepository boardRepository;
    /*
    ์›๋ž˜ ์ž๋ฐ” ๊ฐ™์€ ๊ฒฝ์šฐ
    BoardRepository boardRepository = new BoardRepository๋กœ ์ƒ์„ฑํ•œ๋‹ค. ํ•˜์ง€๋งŒ, BoardRepository๋Š” ์• ์ดˆ์— ์ธํ„ฐํŽ˜์ด์Šค๋ผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค.
    */
    public void write(Board board){
		boardRepository.save(board);
	}
}

์Šคํ”„๋ง์— @Autowired ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํ”„๋ง๋นˆ์ด ์•Œ์•„์„œ ์ฝ์–ด์™€์„œ private BoardRepository boardRepository; ์š”๊ธฐ๋‹ค๊ฐ€ ์ฃผ์ž…์„ ํ•ด์ค€๋‹ค. ์ด๋Ÿฐ๊ฑธ DI(Dependency Injection)๋ผ๊ณ  ํ•œ๋‹ค.

boardRepository์— save๊ฐ€ ์žˆ๋‹ค. entity(board ๋ณ€์ˆ˜)๋ฅผ ์•ˆ์— ๋„ฃ์–ด์ค€๋‹ค.
๊ทธ๋ž˜์„œ Board ํด๋ž˜์Šค์— board๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด์ค˜์„œ ๋ฐ›์•„์ฃผ๊ณ  save์— board๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

๋ฆฌ์ŠคํŠธ

import java.util.List;

    public List<Board> boardList(){
        return boardRepository.findAll();
    }

findAll ๋ฉ”์†Œ๋“œ๋Š” ๋ฐ˜ํ™˜ํ•œ๋‹ค.

profile
์˜ค๋Š˜๋ณด๋‹จ ๋‚ด์ผ์ด ๊ฐ•ํ•œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค!!๐Ÿง‘๐Ÿปโ€๐Ÿ’ป

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด