Skip to content

Latest commit

ย 

History

History
280 lines (236 loc) ยท 10.1 KB

Section6.md

File metadata and controls

280 lines (236 loc) ยท 10.1 KB

6์žฅ ๊ฐ์ฒด์™€ ์ž๋ฃŒ ๊ตฌ์กฐ

๋ณ€์ˆ˜๋ฅผ private๋กœ ์ •์˜ํ•˜๋Š” ์ด์œ ๊ฐ€ ์žˆ๋‹ค. ๋‚จ๋“ค์ด ๋ณ€์ˆ˜์— ์˜์กดํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด์„œ์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์–ด์งธ์„œ getter, setter๋Š” ๋‹น์—ฐํžˆ publicํ•˜๊ฒŒ ์™ธ๋ถ€์— ๋…ธ์ถœํ• ๊นŒ?

์ž๋ฃŒ ์ถ”์ƒํ™”

๊ตฌ์ฒด์ ์ธ Point ํด๋ž˜์Šค

// ์ง๊ต์ขŒํ‘œ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ฐœ๋ณ„์ ์œผ๋กœ ์ขŒํ‘œ ๋ณ€์ˆ˜๋ฅผ ์ฝ๊ณ  ์„ค์ •ํ•œ๋‹ค.
// ๋งŒ์•ฝ private๋กœ ์„ ์–ธํ•˜๋”๋ผ๋„ getter, setter๋ฅผ publicํ•˜๊ฒŒ ์ œ๊ณตํ•œ๋‹ค๋ฉด ๊ตฌํ˜„์„ ์™ธ๋ถ€๋กœ ๋…ธ์ถœํ•˜๋Š” ์…ˆ์ด๋‹ค. 
public class Point {
    public double x;
    public double y;
}

์ถ”์ƒ์ ์ธ Point ํด๋ž˜์Šค

// ์ง๊ต์ขŒํ‘œ๊ณ„์ธ์ง€ ๊ทน์ขŒํ‘œ๊ณ„์ธ์ง€ ๋ชจ๋ฅธ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ์ž๋ฃŒ ๊ตฌ์กฐ ์ด์ƒ์„ ํ‘œํ˜„ํ•œ๋‹ค.
// ์ด๋Š” ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ ์ ‘๊ทผ ์ •์ฑ…(public)์„ ๊ฐ•์ œํ•˜๋ฉฐ ์ขŒํ‘œ๋ฅผ ์ฝ์„ ๋•Œ๋Š” ๊ฐœ๋ณ„์ ์œผ๋กœ ์ฝ์–ด์•ผํ•˜์ง€๋งŒ, ์„ค์ •์€ ํ•œ๋ฒˆ์— ํ•œ๋‹ค. 
public interface Point {
    double getX();
    double getY();
    void setCartesian(double x, double y);
    double getR();
    double getTheta();
    void setPolar(double r, double theta);
}
  • ๊ตฌํ˜„์„ ๊ฐ์ถ”๋ ค๋ฉด ์ถ”์ƒํ™” ํ•„์š”ํ•˜๋‹ค.
  • ๊ทธ์ € getter, setter๋กœ ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฃฌ๋‹ค๊ณ  ํด๋ž˜์Šค๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ถ”์ƒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌํ˜„์„ ๋ชจ๋ฅธ ์ฑ„ ์ž๋ฃŒ์˜ ํ•ต์‹ฌ์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ์ง„์ •ํ•œ ์˜๋ฏธ์˜ ํด๋ž˜์Šค๋‹ค.

๊ตฌ์ฒด์ ์ธ Vehicle ํด๋ž˜์Šค

// ์ž๋™์ฐจ ์—ฐ๋ฃŒ ์ƒํƒœ๋ฅผ ๊ตฌ์ฒด์ ์ธ ์ˆซ์ž ๊ฐ’์œผ๋กœ ์•Œ๋ ค์ค€๋‹ค.
public interface Vehicle {
    double getFuelTankCapacityInGallons();
    double getGallonsOfGasoline();
}

์ถ”์ƒ์ ์ธ Vehicle ํด๋ž˜์Šค

// ์ž๋™์ฐจ ์—ฐ๋ฃŒ ์ƒํƒœ๋ฅผ ๋ฐฑ๋ถ„์œจ์ด๋ผ๋Š” ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์œผ๋กœ ์•Œ๋ ค์ค€๋‹ค.
public interface Vehicle {
    double getFuelTankCapacityInGallons();
}
  • ์ž๋ฃŒ๋ฅผ ์„ธ์„ธํ•˜๊ฒŒ ๊ณต๊ฐœํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ํŽธ์ด ์ข‹๋‹ค.
  • ๊ฐœ๋ฐœ์ž๋Š” ๊ฐ์ฒด๊ฐ€ ํฌํ•จํ•˜๋Š” ์ž๋ฃŒ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•ด์•ผํ•œ๋‹ค.
  • ์•„๋ฌด์ƒ๊ฐ์—†์ด ์ธํ„ฐํŽ˜์ด์Šค ์กฐํšŒ/์„ค์ • ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๊ฐ€์žฅ๋‚˜์˜๋‹ค.

์ž๋ฃŒ/๊ฐ์ฒด ๋น„๋Œ€์นญ

  • ์ž๋ฃŒ ๊ตฌ์กฐ : ์ž๋ฃŒ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ณต๊ฐœํ•˜๋ฉฐ ๋ณ„๋‹ค๋ฅธ ํ•จ์ˆ˜๋Š” ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ฐ์ฒด : ์ถ”์ƒํ™” ๋’ค๋กœ ์ž๋ฃŒ๋ฅผ ์ˆจ๊ธด ์ฑ„ ์ž๋ฃŒ๋ฅผ ๋‹ค๋ฃจ๋Š” ํ•จ์ˆ˜๋งŒ ๊ณต๊ฐœํ•œ๋‹ค.

์ ˆ์ฐจ์ ์ธ ๋„ํ˜•

public class Square {
    public Point topLeft;
    public double side;
}
public class Rectangle {
    public Point topLeft;
    public double height;
    public double width;
}
public class Circle {
    public Point center;
    public double radius;
}

// ๋„ํ˜•์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ตฌํ˜„
public class Geometry {
    public final double PI = 3.141592653589793;

    public double area(Object shape) throws NoSuchShapeException
    {
        if (shape instanceof Square) {
            Square s = (Square)shape;
            return s.side * s.side;
        } else if (shape instanceof Rectangle) {
            Rectangle r = (Rectangle)shape;
            return r.height * r.width;
        } else if (shape instanceof Circle) {
            Circle c = (Circle)shape;
            return PI * c.radius * c.radius;
        }
        throw new NoSuchShapeException();
    }
}
  • ์ƒˆ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?
    • ๋„ํ˜• ํด๋ž˜์Šค๋Š” ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.
    • ๋„ํ˜•ํด๋ž˜์Šค์— ์˜์กดํ•˜๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€
  • ์ƒˆ ๋„ํ˜•์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?
    • Geometryํด๋ž˜์Šค์— ์†ํ•œ ํ•จ์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ณ ์ณ์•ผํ•œ๋‹ค.

Geometryํด๋ž˜์Šค๊ฐ€ ๋ชจ๋“  ๋„ํ˜• ํด๋ž˜์Šค๋ฅผ ์˜์กดํ•˜๋Š” ํ˜•ํƒœ

๋‹คํ˜•์ ์ธ ๋„ํ˜•

// Geometry ํด๋ž˜์Šค๋Š” ํ•„์š”์—†๋‹ค.
public interface Shape {
    double area(); // ๋‹คํ˜• ๋ฉ”์„œ๋“œ
}

public class Square implements Shape {
    private Point topLeft;
    private double side;
    
    @Override
    public double area() {
        return side*side;
    }
}

public class Rectangle implements Shape {
    private Point topLeft;
    private double height;
    private double width;
    
    @Override
    public double area() {
        return height * width;
    }
}

public class Circle implements Shape {
    private Point center;
    private double radius;
    public final double PI = 3.141592653589793;
    
    @Override
    public double area() {
        return PI * radius * radius;
    }
}
  • ์ƒˆ ๋„ํ˜•์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?
    • ๊ธฐ์กด ํ•จ์ˆ˜์— ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ƒˆ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?
    • ๋ชจ๋“  ๋„ํ˜• ํด๋ž˜์Šค ์ „๋ถ€๋ฅผ ๊ณ ์ณ์•ผํ•œ๋‹ค.

๋ชจ๋“  ๋„ํ˜• ํด๋ž˜์Šค๊ฐ€ Shape์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜์กดํ•˜๋Š” ํ˜•ํƒœ

์ •๋ฆฌ

  • ์ ˆ์ฐจ์ ์ธ ์ฝ”๋“œ : ๊ธฐ์กด ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ƒˆ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์‰ฝ๋‹ค.
  • ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์ฝ”๋“œ : ๊ธฐ์กด ํ•จ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์‰ฝ๋‹ค.

์ƒˆ๋กœ์šด ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ, ์ƒˆ๋กœ์šด ์ž๋ฃŒ ํƒ€์ž…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค โžก๏ธ ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์ฝ”๋“œ

์ƒˆ๋กœ์šด ์ž๋ฃŒ ํƒ€์ž…์ด ์•„๋‹ˆ๋ผ, ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค โžก๏ธ ์ ˆ์ฐจ์ ์ธ ์ฝ”๋“œ

๋ถ„๋ณ„ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ์ฒด๋ผ๋Š” ์ƒ๊ฐ์ด ๋ฏธ์‹ ์ž„์„ ์ž˜ ์•ˆ๋‹ค. ๋•Œ๋กœ๋Š” ๋‹จ์ˆœํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ์™€ ์ ˆ์ฐจ์ ์ธ ์ฝ”๋“œ๊ฐ€ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์ƒํ™ฉ๋„ ์žˆ๋‹ค.

๋””๋ฏธํ„ฐ ๋ฒ•์น™

  • ๋””๋ฏธํ„ฐ ๋ฒ•์น™ : ๋ชจ๋“ˆ์€ ์ž์‹ ์ด ์กฐ์ž‘ํ•˜๋Š” ๊ฐ์ฒด์˜ ์†์‚ฌ์ •์„ ๋ชฐ๋ผ์•ผ ํ•œ๋‹ค.
    • ๊ฐ์ฒด๋Š” ์ž๋ฃŒ๋ฅผ ์ˆจ๊ธฐ๊ณ  ํ•จ์ˆ˜๋ฅผ ๊ณต๊ฐœํ•œ๋‹ค. = ๊ฐ์ฒด๋Š” ์กฐํšŒ ํ•จ์ˆ˜๋กœ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๊ณต๊ฐœํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
  • ๋””๋ฏธํ„ฐ ๋ฒ•์น™์€ "ํด๋ž˜์Šค C์˜ ๋ฉ”์„œ๋“œ f๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋งŒ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค"๊ณ  ์ฃผ์žฅํ•œ๋‹ค.
    • ํด๋ž˜์Šค C
    • f ๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ์ฒด
    • f ์ธ์ˆ˜๋กœ ๋„˜์–ด์˜จ ๊ฐ์ฒด
    • C ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ์ฒด

ํ•˜์ง€๋งŒ, ์œ„ ํ—ˆ์šฉ๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋Š” ํ˜ธ์ถœํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

์˜ˆ์‹œ

@Getter
public class User {

  private String email;
  private String name;
  private Address address;

  public boolean isSeoulUser(){
      return address.isSeoulRegion();
  }
}

@Getter
public class Address {

  private String region;
  private String details;

  public boolean isSeoulRegion(){
      return "์„œ์šธ".equals(region);
  }
}
// ๋””๋ฏธํ„ฐ ๋ฒ•์น™ ์œ„๋ฐ˜ ์ฝ”๋“œ
@Service
public class NotificationService {

  public void sendMessageForSeoulUser(final User user) {
    if("์„œ์šธ".equals(user.getAddress().getRegion())) {
      sendNotification(user);
    }
  }
}
// ๋””๋ฏธํ„ฐ ๋ฒ•์น™ ์ค€์ˆ˜ ์ฝ”๋“œ
@Service
public class NotificationService {

  public void sendMessageForSeoulUser(final User user) {
    if(user.isSeoulUser()) {
      sendNotification(user);
    }
  }
}
  • ๋‘˜๋‹ค user์˜ region์„ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ์ด์ง€๋งŒ, 1๋ฒˆ์€ ๊ฐ์ฒด์—๊ฒŒ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๋Š” ์ž๋ฃŒ๋ฅผ ํ™•์ธํ•˜๊ณ  ์žˆ๋‹ค.

์ถœ์ฒ˜ : MangKyu's Diary:ํ‹ฐ์Šคํ† ๋ฆฌ

๊ธฐ์ฐจ ์ถฉ๋Œ

์˜ˆ์ œ

final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath();
  • ์œ„ ์˜ˆ์ œ๋Š” ์—ฌ๋Ÿฌ ๊ฐ์ฒด๊ฐ€ ํ•œ ์ค„๋กœ ์ด์–ด์ง„ ๊ธฐ์ฐจ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”ํžˆ ๊ธฐ์ฐจ ์ถฉ๋Œ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์กฐ์žกํ•˜๋‹ค๊ณ  ๋Š๊ปด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜๋ˆ„๋Š” ํŽธ์ด ์ข‹๋‹ค.
Options opts = ctxt.getOptions();
File scratchDir = opts.getScratchDir();
final String outputDir = scratchDir.getAbsolutePath();
  • ์œ„ ์˜ˆ์ œ๋ฅผ ๋‚˜๋ˆ„์–ด๋ณด๋ฉด, ๋งŽ์€ ๊ฐ์ฒด์˜ ๋‚ด๋ถ€๊ตฌ์กฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋งŒ์•ฝ ctxt, opts, scratchDir๊ฐ€ ๊ฐ์ฒด๋ผ๋ฉด ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์ˆจ๊ฒจ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋””๋ฏธํ„ฐ ๋ฒ•์น™์„ ์œ„๋ฐ˜ํ•˜๊ฒŒ ๋œ๋‹ค.
  • ํ•˜์ง€๋งŒ ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๋ฉด ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋…ธ์ถœ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๋””๋ฏธํ„ฐ ๋ฒ•์น™์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.
final String outputDir = ctxt.options.scratchDir.absolutePath;

์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ๋ฌด์กฐ๊ฑด ํ•จ์ˆ˜ ์—†์ด ๊ณต๊ฐœ ๋ณ€์ˆ˜๋งŒ ํฌํ•จํ•˜๊ณ  ๊ฐ์ฒด๋Š” ๋น„๊ณต๊ฐœ ๋ณ€์ˆ˜์™€ ๊ณต๊ฐœ ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•œ๋‹ค๋ฉด ํŒ๋‹จ์ด ์‰ฝ๋‹ค.

ํ•˜์ง€๋งŒ ์ž๋ฃŒ ๊ตฌ์กฐ์—๋„ ์กฐํšŒ ํ•จ์ˆ˜์™€ ์„ค์ • ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋ผ ์š”๊ตฌํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์™€ ํ‘œ์ค€์ด ์กด์žฌํ•œ๋‹ค. (ex. bean๊ทœ์•ฝ)

์žก์ข… ๊ตฌ์กฐ

  • ์ด๋Ÿฐ ํ˜ผ๋ž€์œผ๋กœ ์ธํ•ด ๋•Œ๋•Œ๋กœ ์ ˆ๋ฐ˜์€ ๊ฐ์ฒด, ์ ˆ๋ฐ˜์€ ์ž๋ฃŒ๊ตฌ์กฐ์ธ ์žก์ข… ๊ตฌ์กฐ๊ฐ€ ๋‚˜์˜จ๋‹ค.
  • ์žก์ข… ๊ตฌ์กฐ : ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜๋„ ์žˆ๊ณ , ๊ณต๊ฐœ ๋ณ€์ˆ˜๋‚˜ ๊ณต๊ฐœ ์กฐํšŒ/์„ค์ • ํ•จ์ˆ˜๋„ ์žˆ๋‹ค.
    • ๊ณต๊ฐœ ์กฐํšŒ/์„ค์ • ํ•จ์ˆ˜๋Š” ๋น„๊ณต๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœํ•œ๋‹ค.
  • ์ด๋Š” ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋Š” ๋ฌผ๋ก ์ด๊ณ  ์ƒˆ๋กœ์šด ์ž๋ฃŒ ๊ตฌ์กฐ๋„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ๋˜๋„๋ก ํ”ผํ•˜๋Š” ํŽธ์ด ์ข‹๋‹ค.

๊ตฌ์กฐ์ฒด ๊ฐ์ถ”๊ธฐ

  • ์œ„ ์˜ˆ์‹œ๋Š” ์ž„์‹œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ž„์‹œ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์–ป๊ณ ์žˆ๋Š” ์˜ˆ์‹œ์ด๋‹ค.
  • ๋”ฐ๋ผ์„œ ์œ„ ์˜ˆ์‹œ ์ฒ˜๋Ÿผ ๊ณต๊ฐœํ•ด์•ผํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๋งŽ์•„์ง€๋Š” ๊ฒƒ๋ณด๋‹ค, ctxt ๊ฐ์ฒด์—๊ฒŒ ์ž„์‹œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋„๋ก ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š”๊ฒŒ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณด์ธ๋‹ค.
BufferedOutputStream bos = ctxt.createScratchFileStream(classFileName);

์ž๋ฃŒ ์ „๋‹ฌ ๊ฐ์ฒด

  • ์ž๋ฃŒ ๊ตฌ์กฐ์ฒด : ๊ณต๊ฐœ๋ณ€์ˆ˜๋งŒ ์žˆ๊ณ  ํ•จ์ˆ˜๋Š” ์—†๋Š” ํด๋ž˜์Šค
  • ์ž๋ฃŒ ์ „๋‹ฌ ๊ฐ์ฒด(Data Transfer Object)
    • ์ž๋ฃŒ ๊ตฌ์กฐ์ฒด๋ฅผ ๋•Œ๋กœ๋Š” DTO๋ผ ํ•œ๋‹ค.
    • DTO๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๊ฐ€๊ณต๋˜์ง€ ์•Š๋Š” ์ •๋ณด๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

Entity, VO, DTO ์ฐจ์ด , Repository, DAO ์ฐจ์ด ๊ณต๋ถ€ ํ•„์š”.

ํ™œ์„ฑ ๋ ˆ์ฝ”๋“œ

  • ํ™œ์„ฑ ๋ ˆ์ฝ”๋“œ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์ง€๋งŒ, save๋‚˜ find์™€ ๊ฐ™์€ ํƒ์ƒ‰ ํ•จ์ˆ˜๋„ ์ œ๊ณตํ•œ๋‹ค.
  • ํ™œ์„ฑ ๋ ˆ์ฝ”๋“œ์— ๋น„์ง€๋‹ˆ์Šค๋กœ์ง์„ ์ถ”๊ฐ€ํ•ด ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”ํ•˜๋‹ค.
    • ์ด๋Š” ์žก์ข…๊ตฌ์กฐ๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฌ๋ฏ€๋กœ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š๋‹ค.
  • ํ•ด๊ฒฐ์ฑ…์œผ๋กœ๋Š” ๋น„๋‹ˆ์ง€์Šค ๋กœ์ง์„ ๋‹ด์œผ๋ฉด์„œ ์ž๋ฃŒ๋ฅผ ์ˆจ๊ธฐ๋Š” ๊ฐ์ฒด๋ฅผ ๋”ฐ๋กœ ์ƒ์„ฑํ•˜๋ฉด๋œ๋‹ค.

๊ฒฐ๋ก 

๊ฐ์ฒด๋Š” ๋™์ž‘์„ ๊ณต๊ฐœํ•˜๊ณ  ์ž๋ฃŒ๋ฅผ ์ˆจ๊ธด๋‹ค.

  • ๊ธฐ์กด ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ์ƒˆ ๊ฐ์ฒด ํƒ€์ž…์„ ์ถ”๊ธฐํ•˜๊ธฐ ์‰ฌ์šด ๋ฐ˜๋ฉด, ๊ธฐ์กด ๊ฐ์ฒด์— ์ƒˆ ๋™์ž‘์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค.

์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ณ„๋‹ค๋ฅธ ๋™์ž‘ ์—†์ด ์ž๋ฃŒ๋ฅผ ๋…ธ์ถœํ•œ๋‹ค.

  • ๊ธฐ์กด ์ž๋ฃŒ ๊ตฌ์กฐ์— ์ƒˆ ๋™์ž‘์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋Š” ์‰ฌ์šฐ๋‚˜, ๊ธฐ์กด ํ•จ์ˆ˜์— ์ƒˆ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค.