์ด์ง€๋ฏผ์˜ ๊ฐœ๋ฐœ ๋…ธํŠธ

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ๊ณต๋ถ€ํ•˜๋ฉฐ Java์™€ Spring์„ ์ค‘์‹ฌ์œผ๋กœ ํ•™์Šต ๊ธฐ๋ก์„ ์ •๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค.

๐Ÿ”ฅ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/๐Ÿ“Œ ๊ณผ์ œ

[๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Spring_3๊ธฐ] CH2 ์ปค๋จธ์Šค ๊ณผ์ œ Step4

jiiimni 2026. 1. 28. 11:53

์ƒ๊ฐํ•ด๋ณด๊ธฐ

Step 4 ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฝ์–ด๋ณด๋‹ˆ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด๋“ค์„ ๋” ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

ํ•„๋“œ์— ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰๊ณ , Getter๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฒŒ ํ•˜๊ณ , ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ์™ธ๋ถ€์—์„œ ํ•จ๋ถ€๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์บก์Аํ™” ๊ฐœ๋…์„ ์ฝ”๋“œ๋กœ ์ง์ ‘ ์ ์šฉํ•ด๋ณด๋Š” ๋‹จ๊ณ„๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.


์„ค๊ณ„

  • ๋ชจ๋“  ํ•„๋“œ๋Š” private๋กœ ์„ค๊ณ„
  • ์™ธ๋ถ€์—์„œ ์ฝ์–ด์•ผ ํ•˜๋Š” ๊ฐ’๋งŒ getter ์ œ๊ณต
  • setter๋Š” ์ตœ์†Œํ™”ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
  • ์ปฌ๋ ‰์…˜ ํ•„๋“œ๋Š” ๊ทธ๋Œ€๋กœ ๋…ธ์ถœํ•˜์ง€ ์•Š์Œ

๊ฐ์ฒด ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ๊ฐ์ฒด ์Šค์Šค๋กœ ๋ณดํ˜ธํ•˜๋„๋ก ์„ค๊ณ„


Product ํด๋ž˜์Šค

Product ํด๋ž˜์Šค์—์„œ๋Š” ์ƒํ’ˆ์˜ ๊ธฐ๋ณธ ์ •๋ณด์™€ ์žฌ๊ณ ๋ฅผ ํ•„๋“œ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
๋ชจ๋“  ํ•„๋“œ๋ฅผ private๋กœ ์„ ์–ธํ•˜๊ณ  ์™ธ๋ถ€์—์„œ๋Š” getter๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.

Product.java ์ „์ฒด ์ฝ”๋“œ

package kr.spartaclub.com.example.commerce;

public class Product {
    private final String name;
    private final int price;
    private final String description;
    private int stock;

    public Product(String name, int price, String description, int stock) {
        this.name = name;
        this.price = price;
        this.description = description;
        this.stock = stock;
    }

    public String getName() { return name; }
    public int getPrice() { return price; }
    public String getDescription() { return description; }
    public int getStock() { return stock; }
}

Category ํด๋ž˜์Šค

Category ํด๋ž˜์Šค๋Š” ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฆ„๊ณผ ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•œ ์ƒํ’ˆ ๋ชฉ๋ก์„ ๊ด€๋ฆฌํ•œ๋‹ค.
์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ๋Š” ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ˆ˜์ •๋˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•˜์—ฌ, ๋‚ด๋ถ€ ์ปฌ๋ ‰์…˜์„ ๋ณดํ˜ธํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๊ฐœ์„ ํ–ˆ๋‹ค.

์™ธ๋ถ€ ์ฝ”๋“œ์—์„œ ๋‚ด๋ถ€ ์ปฌ๋ ‰์…˜์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ

Category.java ์ „์ฒด ์ฝ”๋“œ

package kr.spartaclub.com.example.commerce.step4;

import kr.spartaclub.com.example.commerce.Product;

import java.util.List;

// ํ•˜๋‚˜์˜ ์นดํ…Œ๊ณ ๋ฆฌ(์ „์ž์ œํ’ˆ, ์˜๋ฅ˜, ์‹ํ’ˆ)๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ์ฒด
// ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฆ„๊ณผ ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•œ ์ƒํ’ˆ ๋ชฉ๋ก์„ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•œ๋‹ค.
public class Category {

    // ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฆ„ - ์™ธ๋ถ€์—์„œ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๋„๋ก private + final
    private final String name;

    // ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•œ ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ - ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ ‘๊ทผ ๋ถˆ๊ฐ€
    private final List<Product> products;

    /**
     * Category ์ƒ์„ฑ์ž
     * @param name ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฆ„
     * @param products ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์— ํฌํ•จ๋  ์ƒํ’ˆ ๋ชฉ๋ก
     */
    public Category(String name, List<Product> products) {
        this.name = name;
        this.products = products;
    }

    // ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฆ„ ์กฐํšŒ
    public String getName() {
        return name;
    }

    // ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•œ ์ƒํ’ˆ ๋ชฉ๋ก ์กฐํšŒ
    public List<Product> getProducts() {
        return products;
    }
}

Customer ํด๋ž˜์Šค

Customer ํด๋ž˜์Šค๋Š” ๊ณ ๊ฐ์˜ ์ด๋ฆ„, ์ด๋ฉ”์ผ, ๋“ฑ๊ธ‰, ๋ˆ„์  ์ฃผ๋ฌธ ๊ธˆ์•ก ์ •๋ณด๋ฅผ ๊ฐ€์ง„๋‹ค.
๋ชจ๋“  ํ•„๋“œ๋ฅผ private์œผ๋กœ ์„ ์–ธํ•˜๊ณ  getter๋งŒ ์ œ๊ณตํ•˜์—ฌ ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ˆ˜์ •ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.

Customer.java ์ „์ฒด ์ฝ”๋“œ

package kr.spartaclub.com.example.commerce.step4;

// Customer ํด๋ž˜์Šค
// ๊ณ ๊ฐ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด
public class Customer {

    // ๊ณ ๊ฐ ์ด๋ฆ„๊ณผ ์ด๋ฉ”์ผ์€ ์ƒ์„ฑ ํ›„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ final
    private final String name;
    private final String email;

    // ๊ณ ๊ฐ ๋“ฑ๊ธ‰๊ณผ ๋ˆ„์  ์ฃผ๋ฌธ ๊ธˆ์•ก
    private String grade;
    private int totalOrderAmount;

    // Customer ์ƒ์„ฑ์ž
    public Customer(String name, String email) {
        this.name = name;
        this.email = email;
        this.grade = "BRONZE";
        this.totalOrderAmount = 0;
    }

    // Getter ๋ฉ”์„œ๋“œ๋งŒ ์ œ๊ณต
    public String getName() { return name; }
    public String getEmail() { return email; }
    public String getGrade() { return grade; }
    public int getTotalOrderAmount() { return totalOrderAmount; }
}

๊ฒฐ๊ณผ

์บก์Аํ™”๋ฅผ ์ ์šฉํ•œ ์ดํ›„์—๋„ Step3์—์„œ ๊ตฌํ˜„ํ–ˆ๋˜ ๊ธฐ๋Šฅ๋“ค์€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๊ฐ์ฒด ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ์ˆ˜์ •ํ–ˆ์ง€๋งŒ ์™ธ๋ถ€์—์„œ๋Š” ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ ,
์ด๋ฅผ ํ†ตํ•ด ์บก์Аํ™”์˜ ์žฅ์ ์„ ์ง์ ‘ ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.