[250310] TIL

์˜ค๋Š˜ ํ•œ ์ผ

์ฃผ์š” ํŒจํ‚ค์ง€ ์—ญํ• 

1. ์ปจํŠธ๋กค๋Ÿฌ (Controller)

  • HTTP ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ญํ• 
  • URL ๋งคํ•‘ ๋ฐ ์š”์ฒญ/์‘๋‹ต ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹น
  • @Controller ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค๋กœ ์ง€์ •
  • @GetMapping, @PostMapping ๋“ฑ์˜ ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ URL ๋งคํ•‘

2. ์„œ๋น„์Šค (Service)

  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ
  • ์—ฐ์‚ฐ ๋ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
  • @Service ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ํด๋ž˜์Šค๋กœ ์ง€์ •
  • @Transactional ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ
  • Repository์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ ๋ฐ ์กฐ์ž‘

3. ๋ ˆํฌ์ง€ํ† ๋ฆฌ (Repository)

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๊ฒฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์กฐํšŒ ๋ฐ ์กฐ์ž‘
  • @Repository ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํด๋ž˜์Šค๋กœ ์ง€์ •
  • JPA Repository๋ฅผ ์ƒ์†๋ฐ›์•„ ๊ธฐ๋ณธ์ ์ธ CRUD ์ž‘์—… ์ œ๊ณต
  • JPA ์‚ฌ์šฉ ์‹œ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ์œผ๋กœ๋„ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ด€๋ ค ๋กœ์ง ์บก์Аํ™”
public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByEmail(String email);
    // ์ฟผ๋ฆฌ ๋ฉ”์†Œ๋“œ๋“ค...
}

4. ์—”ํ‹ฐํ‹ฐ (Entity)

  • ์œ„์น˜ : entity, model, domain ํŒจํ‚ค์ง€์— ์œ„์น˜
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘๋˜๋Š” ๊ฐ์ฒด
  • @Entity ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค๋กœ ์ง€์ •
  • ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ฅผ ์ž๋ฐ” ํด๋ž˜์Šค๋กœ ํ‘œํ˜„
  • ์ฃผ๋กœ Getter, Setter, ์ƒ์„ฑ์ž, ๋ฉ”์†Œ๋“œ ๋“ฑ์„ ํฌํ•จ
  • Lombok ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ ๊ฐ„๊ฒฐํ™”
@Entity
@Getter
@Setter

์ž๋ฐ” ํ”„๋กœ์ ํŠธ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋“ค

  • ๊ณ„์ธต ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ
  • ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ
  • ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ
  • ํ•ต์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜
  • ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ

๋‚ด๊ฐ€ ์„ ํƒํ•œ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ

๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ

com.example.project
โ”œโ”€โ”€ user
โ”‚   โ”œโ”€โ”€ UserController
โ”‚   โ”œโ”€โ”€ UserService
โ”‚   โ”œโ”€โ”€ UserRepository
โ”‚   โ””โ”€โ”€ User
โ”œโ”€โ”€ post
โ”‚   โ”œโ”€โ”€ PostController
โ”‚   โ”œโ”€โ”€ PostService
โ”‚   โ”œโ”€โ”€ PostRepository
โ”‚   โ””โ”€โ”€ Post
โ””โ”€โ”€ comment
    โ”œโ”€โ”€ CommentController
    โ”œโ”€โ”€ CommentService
    โ”œโ”€โ”€ CommentRepository
    โ””โ”€โ”€ Comment
  • ์ง๊ด€์ ์œผ๋กœ ์–ด๋–ค ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์ปจํŠธ๋กค๋Ÿฌ, ์„œ๋น„์Šค, ๋ ˆํฌ์ง€ํ† ๋ฆฌ, ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์žˆ๋Š”์ง€ ํŒŒ์•… ๊ฐ€๋Šฅ
  • ๋„๋ฉ”์ธ ๋ณ„๋กœ ํŒŒ์ผ์„ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
  • ๊ณ„์ธต ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋ณด๋‹ค ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ
  • ํ•™์Šตํ•˜์˜€์„ ๋•Œ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Œ

Categories:

Updated:

Leave a comment