@GetMapping("/")
@ResponseBody
public String main(){
return "Hello world";
}
GetMapping("/")
์ ์ด๋ค URL๋ก ์ ๊ทผํ ๊ฑด์ง ์ง์ ํด์ฃผ๋ ์ด๋
ธํ
์ด์
์ด๋ค.
@responseBody
๋ ์ค์ ํ GetMapping("/")
์ ์ ์(localhost:8080)์ ์ ์ํ์ ๋ return์ ํด๋นํ๋ ๋ถ๋ถ์ ํ๋ฉด์ ๋์ด์ค ์ ์๋ ์ด๋
ธํ
์ด์
์ด๋ค.
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!!
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ํด๋์ 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 ํ ์ด๋ธ์ ๊ด๋ จํ ์ค์ ์ด๊ตฌ๋ ํ๋ฉด์ ์ฒ๋ฆฌ๋ฅผ ํด์ค๋ค.
Primary ํค๋ฅผ ์๋ฏธํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํค(PK)์ ๊ฐ์ฒด์ ํ๋๋ฅผ ๋งคํ์์ผ์ฃผ๋ ์ด๋ ธํ ์ด์ ์ ๋๋ค.
@Id
์ด๋
ธํ
์ด์
๋ง ์ ๊ฒ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธํค๊ฐ์ ์ง์ ๋ถ์ฌํด์ค์ผ ํ๋ค.@GeneratedValue
๋ฅผ ์ฌ์ฉํด์ฃผ๋ฉด ๋ฉ๋๋ค.@GeneratedValue(strategy = GenerationType.IDENTITY)
IDENTITY๋ mySql์ mariadb์์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
@GeneratedValue(strategy = GenerationType.SEQUENCE)
์ค๋ผํด์์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
@GeneratedValue(strategy = GenerationType.AUTO)
์๋์ง์
์ฆ, ๊ธฐ๋ณธ ํค๋ฅผ ์๋ ์์ฑํด์ฃผ๋ ์ด๋ ธํ ์ด์ ์ ๋๋ค.
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
์ด๋
ธํ
์ด์
์ ์
๋ ฅํด์ค์ผ ํ๋ค.
@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 ๋ฉ์๋๋ ๋ฐํํ๋ค.