ํด๋น ํฌ์คํธ๋ ์ฌ๋ฌ ํธ์ผ๋ก ๋๋์ด์ ธ ํ๋์ ๊ฐ๋ ์ ์ด๋ฃจ๊ณ ์์ต๋๋ค. ๋ณด๋ค ์์ธํ ํ์ต๊ณผ ์ดํด๋ฅผ ์ํด ๋ค๋ฅธ ํฌ์คํธ๋ ์ฐธ๊ณ ํด์ฃผ์ธ์ :)
- 1 Jpa์ Entity ์ค์ ๋ฐ Repository ์ค์
- 2 create๋ฉ์๋๋ก ํ์๊ฐ์ ์๋น์ค ๋ง๋ค๊ธฐ-๊ผญ ํ์ธํ์ ์ผํด์!!
- 3 read ๋ฉ์๋๋ก ํ์ ๊ฒ์ ์๋น์ค ๋ง๋ค๊ธฐ
- 4 update ๋ฉ์๋๋ก ๊ฐ์ธ์ ๋ณด ์์ ์๋น์ค ๋ง๋ค๊ธฐ
- 5 delete ๋ฉ์๋๋ก ํ์ ํํด ์๋น์ค ๋ง๋ค๊ธฐ
์ ์๊ฐ์ ์ฐ๋ฆฌ๋ CRUD๋ฅผ ์ํด ๋ค์ํ ์ค์ ์ ํ์๋ค. ์ด์ ์ค์ Controller์ ์ด์ฉํ์ฌ ์๋น์ค๋ฅผ ๋ง๋ค์ด ๋ณด์!
ํ์ต์ ํ ์คํธ์ฝ๋๋ฅผ ๋จผ์ ์์ฑํ๊ณ ์๋น์ค๋ฅผ ๋ฑ๋กํ๋ ์์๋ก ์ด๋ฃจ์ด์ง ์์ ์ด๋ค.
CRUD๋ฅผ ์ํ Controller์ ํ ์คํธ๋ฅผ ์ค๋นํด๋ณด์.
์ ์ User์ ๋ํ Entity์ Repository๋ฅผ ๋ง๋ค์์ผ๋ฏ๋ก ์ด์ ์๋น์ค๋ฅผ ์ํ Controller๋ฅผ ๋ง๋ค์.
controller
ํจํค์ง๋ฅผ ๋ง๋ค์ด์ค๋ค. ๊ทธ๋ฆฌ๊ณUserController
์ ๋ง๋ ๋ค.
- ํ
์คํธ๋ฅผ ์ํด
test
๋๋ ํ ๋ฆฌ ํ์์repository
๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณUserRepositoryTests
ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ ํฌ์งํ ๋ฆฌ ํ ์คํธ ์ค๋น๋ฅผ ๋ง์น๋ค.
Test First!!
User์ Create Test
UserRepositoryTests
ํด๋์ค์์ JpatestApplicationTests
๋ฅผ ์์๋ฐ์์ค๋ค.
public class UserRepositoryTests extends JpatestApplicationTests {
@Autowired
private UserRepository userRepository;
}
@Autowired
์ด๋ ธํ ์ด์ ์ผ๋ก Spring์ IOC๊ฐ Bean์ ์์กด์ฑ์ ์์์ ์ฃผ์ ํ ์ ์๊ฒ ํด์ค๋ค.
Test method ๋ง๋ค๊ธฐ
Create์ ํ
์คํธ๋ฅผ ์ํด์ @Test
์ด๋
ธํ
์ด์
์ ๋ถํ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์๊น @Data
๋ก ๋กฌ๋ณต์ ์ฌ์ฉํด์ Getter/Setter์ ๋ง๋ค์๋๋ฐ set
์์ฑ์ ์ด์ฉํด์ ํด๋น ๊ฐ์ ์ณ์ฃผ์.
์์์ ๋ดค์ ๋ ๋ถ๋ช ํ ์ฐ๋ฆฌ๋ 4๊ฐ์ ํ ์ด๋ธ์ด ์์๋ค. Id, Account, Password, name ๊ทผ๋ฐ 3๊ฐ๋ง set์ ํด์ฃผ๋ ์ด์ ๊ฐ ์๊น ์ฐ๋ฆฌ๊ฐ MYsql์์ ์์ฑ ์ค์ ํ ๋ AutoIncrement๋ฅผ ์ค์ ํด ์คฌ๊ธฐ ๋๋ฌธ์ ๋ฃ์ด์ฃผ์ง ์์๋ ์ธ ์ ์๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ด Mysql Workbench์ ์ ๋ค์ด์ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
User์ ํ์๊ฐ์ ์๋น์ค
์ด์ ํ ์คํธ๊ฐ ๋๋ฌ์ผ๋ ์ค์ ์๋น์ค๋ฅผ ๋ง๋ค์ด๋ณด์!
์๊น ๋ง๋ค์๋ controller
ํด๋์ค๋ก ์ด๋ํด์ UserController
์ ๋ง๋ค์ด ์ฃผ์.
์์ ๊ฒฐ๊ณผ : http://localhost:8080/index/join
์ ๊ฒฝ๋ก์์ join ๋ฉ์๋๊ฐ ์คํ๋๋ค๋ฉด "OO๋์ ํ์๊ฐ์
์ด ์ฑ๊ณต์ ์ผ๋ก ์ด๋ฃจ์ด ์ก์ต๋๋ค." ๋ผ๋ ๋ฉ์ธ์ง๋ฅผ ๋์ด๋ค.
๊ทธ๋ผ ์ฒซ ๋ฒ์งธ๋ก ํ
์คํธํ๊ฒฝ๊ณผ ๋์ผํ๊ฒ @Autowired
๋ก ์์กด์ฑ์ ์ฃผ์
์์ผ์ฃผ๊ณ ์์ํ๋ค.
@PostMapping
์ ๋ณด์ ์ ์ก ๋ฐ ๊ฐ๊ณต์ PostBody์ ํฌํจ์์ผ์ ๋ณด๋ด์ผ ํ๋ค๋ REST ๊ท๊ฒฉ์ ๋ฐ๋ฅด๊ณ ๋ํ ๋ง์ฝ ํ์๊ฐ์ ์ ๋ณด๊ฐ 30๊ฐ์ง๊ฐ ์ ๋ ฅ์ผ๋ก ๋ค์ด์จ๋ค๋ฉด Get ์ผ๋ก ๋ฐ๊ธฐ์ URL์ ๊ธธ์ด๋ฅผ ์ด๊ณผํ๋ฏ๋ก, ํ์๊ฐ์ ์ Post๋ก ๋ฐ๋๋ค.
User newUser = userRepository.save(user);
RequestBody์ ๊ฐ์ธ์ ธ์ ๋ค์ด์ฌ User๊ฐ์ฒด๋ฅผ UserRepository๋ก Create๋ฅผ ํด์ค๋ค.
API Tester๋ก Post ๋ฆฌํ์คํธ๋ฅผ ๋ ๋ ค๋ณด์.
๋ฉ์๋๋ Post๋ก ํ๊ณ ํด๋น URL๋ก Body์ JSON ํ์ ์ผ๋ก ๋ณด๋ด์ฃผ๋ฉด ์ ํํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ค.
๋ํ Mysql Workbench ์๋ ์ฐ๋ฆฌ๊ฐ ๋ณด๋ธ Request์ ๋ถํฉํ๋ ๊ฒฐ๊ณผ๊ฐ ์ ์ฅ๋๋ค.
๋ค์์๊ฐ์ Read ๋ฉ์๋์ ๋ํด์ ์์๋ณด์.
๋๊ธ