โ
์ด๋ค ๊ธฐ๋ฅ์ ๋ง๋๋ ๊ฒ์ธ๊ฐ?
- DB์ ์ ์ฅ๋ ์ํ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์์ ์ํ๋ชฉ๋ก ํ์ด์ง์ ์ถ๋ ฅํ๋ค.
- ์ฝ๋ ์์ ์ค์ด๊ธฐ ์ํด Lombok ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ค.
๐ ์ ์ด๊ฑธ ๋ฐฐ์์ผ ํ์ง?
- ์ง๊ธ๊น์ง๋ ์์ ๋ฐ์ดํฐ๋ง HTML์ ๋ฃ์๋๋ฐ, ์ด์ ์ค์ DB ๋ฐ์ดํฐ์ ์ฐ๋ํด์ผ ํ๋ค.
- Spring JPA + Repository ํจํด์ ์ด์ฉํ๋ฉด SQL์ ์ง์ ์ฐ์ง ์๊ณ ๋ DB ์
์ถ๋ ฅ์ด ๊ฐ๋ฅํ๋ค.
- Lombok์ ๋ฐ๋ณต์ ์ธ getter/setter, ์์ฑ์ ์ฝ๋๋ฅผ ์๋์ผ๋ก ๋ง๋ค์ด์ค์ ์์ฐ์ฑ์ ํฌ๊ฒ ๋์ฌ์ค๋ค.
๐ ๊ฐ๋
์ ๋ฆฌ
| ๊ฐ๋
| ์ค๋ช
|
|---|
| Lombok | ๋ฐ๋ณต ์ฝ๋(getter/setter/constructor ๋ฑ) ์๋ ์์ฑํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
| Repository | JPA์์ DB ์
์ถ๋ ฅ์ ๋ด๋นํ๋ ๊ณ์ธต |
| JpaRepository | JPA์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ์ธํฐํ์ด์ค. findAll(), save() ๋ฑ ๋ด์ฅ ๋ฉ์๋ ์ ๊ณต |
| List | ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๋ณ์์ ๋ด์ ์ ์๋ ์๋ฃํ (ArrayList ๋ฑ ๊ตฌํ์ฒด ์์) |
| Dependency Injection | ํ์ํ ๊ฐ์ฒด๋ฅผ ์คํ๋ง์ด ์์์ ์์ฑ(new)ํด์ ์ฃผ์
ํด์ฃผ๋ ๋ฐฉ์ |
โ๏ธ ๊ตฌํ ํ๋ฆ ๋ฐ ์ฝ๋
1. Lombok ์ค์น (build.gradle)
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
- ํ๋ฌ๊ทธ์ธ ์ค์น + annotation processor ์ฒดํฌ ํ์
2. Repository ์์ฑ
public interface ItemRepository extends JpaRepository<Item, Long> {
}
Item ์ํฐํฐ์ ์ฐ๊ฒฐ๋ Repository ์์ฑ
Long์ id ์ปฌ๋ผ์ ํ์
3. Controller์์ Repository ์ฃผ์
@Controller
@RequiredArgsConstructor
public class ItemController {
private final ItemRepository itemRepository;
@GetMapping("/list")
@ResponseBody
public String list() {
var result = itemRepository.findAll();
System.out.println(result);
return result.toString();
}
}
private final๋ก ์ ์ธ ํ Lombok์ @RequiredArgsConstructor ์ฌ์ฉ โ ์คํ๋ง์ด ์๋์ผ๋ก itemRepository๋ฅผ ์ฃผ์
ํจ
4. List ์๋ฃํ ํ์ฉ
List<Item> result = itemRepository.findAll();
System.out.println(result.get(0));
System.out.println(result.get(0).title);
๐ก ์ด๋ฐ ๊ณณ์ ํ์ฉํ ์ ์์ด์
- ์ํ ๋ชฉ๋ก ์ถ๋ ฅ
- ๊ฒ์ํ ๊ธ ๋ฆฌ์คํธ
- ํ์ ๋ฆฌ์คํธ ํ์ด์ง
- ๊ด๋ฆฌ์์ฉ ๋ฐ์ดํฐ ์กฐํ
โ๏ธ ๊ฐ์ธ ์ ๋ฆฌ ๋ฐ ํ๊ณ
- ์ด์ DB๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฐ๋ํ๊ธฐ ์์ํ๋ค.
- Repository ํจํด์ ์ฐ๋ฉด SQL ๋ชฐ๋ผ๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ๊ฐ๋ฅ โ ์ ์ธ๊ณ!
- Lombok ์์ ๋ ์์ฑ์/Getter/Setter ๋ฐ๋ณตํด์ ์ผ๋๋ฐ, ์ด์ ํจ์ฌ ๊ฐ๊ฒฐํ๋ค.
๐ ์ค๋ ๋ฐฐ์ด ํต์ฌ 3์ค ์์ฝ
Lombok ์ค์น โ ๋ฐ๋ณต ์ฝ๋ ์ค์ด๊ธฐ
Repository ์์ฑ + @RequiredArgsConstructor โ DB ์
์ถ๋ ฅ ์ค๋น ๋
itemRepository.findAll() โ DB ๋ฐ์ดํฐ ์ ๋ถ ๊ฐ์ ธ์ค๊ธฐ ๊ฐ๋ฅ