๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿค“ Codex

Codex๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด๋ณด์ž_ DTO ์ถ”๊ฐ€ํ•˜๊ธฐ

by hyeong._.ing 2026. 5. 22.

 

 

์ „์— ๋งŒ๋“ค์—ˆ๋˜ VIP ์ดˆ๋Œ€์žฅ ํ”„๋กœ์ ํŠธ ์ค‘
๊ณ ๊ฐ ๊ด€๋ จ ๋ถ€๋ถ„์—์„œ DTO ์—†์ด ์ž‘์„ฑํ–ˆ์—ˆ๋‹ค.
Codex์—๊ฒŒ DTO๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

 

 

 

1. Codex App

  • ํ”„๋กœ์ ํŠธ ์ถ”๊ฐ€ํ•˜๊ธฐ

๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ธฐ์กด ํด๋” ์‚ฌ์šฉํ•ด์„œ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

 

  • ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ํŒŒ์•…์‹œํ‚ค๊ธฐ

์ •ํ™•ํ•œ ๋‹ต๋ณ€์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ์ฝ”๋ฑ์Šค์—๊ฒŒ ์œ„์™€ ๊ฐ™์€ ๋ช…๋ น์„ ํ–ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ตฌ์กฐ ํŒŒ์•…์„ ์‹œํ‚ค๋Š” ์งˆ๋ฌธ์„ ๋จผ์ € ํ•˜๋ฉด ๋‹ค๋ฅธ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ–ˆ์„๋•Œ ์ •ํ™•๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค! 

 

 

  • ์›ํ•˜๋Š” ๋ชฉํ‘œ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๋งํ•˜๊ธฐ

์บก์ณ๋ณธ์—๋Š” ์•ˆ๋‚˜์™”์ง€๋งŒ ์œ„์— ๊ณ ๊ฐ๊ด€๋ฆฌDTO์— ๋Œ€ํ•ด ์ญ‰ ์ด์•ผ๊ธฐ๋ฅผ ํ–ˆ๊ณ , ๊ทธ ๋‹ค์Œ์— DTO๋ฅผ ์ถ”๊ฐ€ํ•ด๋‹ฌ๋ผ๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๋” ์ •ํ™•ํ•œ ๋‹ต๋ณ€์„ ์–ป์œผ๋ ค๋ฉด [ DTO๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  ๊ทธ์— ๋งž๊ฒŒ Controller์™€ Service ํด๋ž˜์Šค๋„ ์ˆ˜์ •ํ•ด์ค˜. ]๋ผ๊ณ  ํ•˜๋ฉด ๋œ๋‹ค๋„ค์š”. ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ๋Š” ์–ด๋А ์ปดํฌ๋„ŒํŠธ ํ˜น์€ ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜์ •ํ•ด๋‹ฌ๋ผ๊ณ  ์ž‘์„ฑํ•˜๋ฉด ํ›จ์”ฌ ๋” ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์–ป๋Š”๋‹ค๊ณ  ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ œ ํ”„๋กœ์ ํŠธ๋Š” ๊ตฌ์กฐ๊ฐ€ ๊ฐ„๋‹จํ•œ ํŽธ์ด๋ผ์„œ ๋Œ€์ถฉ ์งˆ๋ฌธํ•ด๋„ ^_^ ๋˜‘๋˜‘ํ•œ ์ฝ”๋ฑ์Šค๊ฐ€! ์ž˜ ์•Œ์•„๋“ค์„๊ฑฐ๋ผ ๋ฏฟ์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

 


 

 

 

2. ์ˆ˜์ •

  • ์ˆ˜์ • ์ „/ํ›„

์ˆ˜์ • ์ „_ DTO ์—†์Œ
์ˆ˜์ • ํ›„_ DTO ์ƒ๊น€

 

  • CustomerRequset
@Getter
@Setter
public class CustomerRequest {
    private String name;
    private String grade;
    private String phone;
    private String code;
    private String note;
}

 

  • CustomerResponse
@Getter
@Setter
public class CustomerResponse {
    private Long id;
    private String name;
    private String grade;
    private String phone;
    private String code;
    private String note;
}

 

  • CustomerController
    - ์ˆ˜์ • ์ „
@GetMapping
public List<Customer> effectCustomers() {
    return customerService.findAllCustomers();
}

@PostMapping
public Customer saveCustomer(@RequestBody Customer customer) {
    return customerService.save(customer);
}

@PutMapping("/{id}")
public ResponseEntity<Customer> updateCustomer(
        @PathVariable Long id,
        @RequestBody Customer data
) {
    Customer updated = customerService.update(id, data);
    return ResponseEntity.ok(updated);
}
์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์ˆ˜์ • ์ „์—๋Š” Entity์˜ Customer๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ–ˆ๋‹ค. 

 

 

    - ์ˆ˜์ • ํ›„

@GetMapping
public List<CustomerResponse> effectCustomers() {
    return customerService.findAllCustomers();
}

@PostMapping
public CustomerResponse saveCustomer(@RequestBody CustomerRequest request) {
    return customerService.save(request);
}

@PutMapping("/{id}")
public ResponseEntity<CustomerResponse> updateCustomer(
        @PathVariable Long id,
        @RequestBody CustomerRequest request
) {
    CustomerResponse updated = customerService.update(id, request);
    return ResponseEntity.ok(updated);
}
DTO๋ฅผ ๋งŒ๋“  ํ›„ Codex๋Š” ์•Œ์•„์„œ Controller ์ฝ”๋“œ๊นŒ์ง€ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ DTO๋กœ ๋ฐ”๊ฟจ๋‹ค. 

 

 

  • CustomerService
    - ์ˆ˜์ • ์ „ (์กฐํšŒ๋ถ€๋ถ„)
public List<Customer> findAllCustomers() {
    return customerRepository.findAll();
}
DB์—์„œ ๊ฐ€์ ธ์˜จ Customer ์—”ํ‹ฐํ‹ฐ ๋ชฉ๋ก์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค.

 

 

    - ์ˆ˜์ • ํ›„ (์กฐํšŒ๋ถ€๋ถ„)

public List<CustomerResponse> findAllCustomers() {
    return customerRepository.findAll().stream()
            .map(this::toResponse)
            .toList();
}
DB์—์„œ ๊ฐ€์ ธ์˜จ Entity ๋ฆฌ์ŠคํŠธ๋ฅผ stream์„ ์จ์„œ DTO๋กœ ํ•˜๋‚˜์”ฉ ๋ณ€ํ™˜ํ–ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์ƒˆ๋กœ์šด DTO ๋ฆฌ์ŠคํŠธ๋ฅผ ์™„์„ฑํ–ˆ๋‹ค. 

 

 

 

GPT ์œ ๋ฃŒ๋ฅผ ์ด์šฉ ์ค‘์ด๋ผ๋ฉด Codex๋ฅผ ์ถ”๊ฐ€๊ธˆ ์—†์ด ์ด์šฉ ๊ฐ€๋Šฅํ•ด์„œ ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•ด๋ดค๋‹ค. ๊ฒฐ๋ก ์€ ๋„ˆ๋ฌด๋„ˆ๋ฌด ํŽธํ–ˆ๋‹ค. ์‚ฌ์‹ค ์ดˆ๊ธฐ ์„ธํŒ…์ด ์–ด๋ ค์šธ๊นŒ๋ด ์ข€ ๊ฑฑ์ •ํ–ˆ๋Š”๋ฐ ๊ทธ๋ ‡์ง€๋„ ์•Š๊ณ  ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•ด์„œ ์•„์ฃผ ๊ตณ! ํด๋กœ๋“œ๋‚˜ ๋‹ค๋ฅธ AI ์—์ด์ „ํŠธ๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ฝ”๋ฑ์Šค๋ผ๋„ ๊ผญ ์ด์šฉํ•ด๋ณด์‹œ๊ธธ!!! ๊ฐ•์ถ”๋“œ๋ฆฝ๋‹ˆ๋‹ค.