2022_02_20 - oneso123456789/2022 GitHub Wiki

other

#8.2.4 update ์ฒ˜๋ฆฌ ๋งˆ์ง€๋ง‰์œผ๋กœ update ์ฒ˜๋ฆฌ๋ฅผํ•จ
๊ฒŒ์‹œ๋ฌผ์˜ ์—…๋ฐ์ดํŠธ๋Š” ์ œ๋ชฉ, ๋‚ด์šฉ ์ž‘์„ฑ์ž๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•จ
์—…๋ฐ์ดํŠธ๋ฅผ ํ•  ๋•Œ๋Š” ์ตœ์ข… ์ˆ˜์ • ์‹œ๊ฐ„์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ •ํ•จ
Update๋Š” delete์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ '๋ช‡ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๋Š”๊ฐ€'๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ int ํƒ€์ž…์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์Œ

BoardMapper ์ธํ„ฐํŽ˜์ด์Šค ์ผ๋ถ€(update์ถ”๊ฐ€ ๋ถ€๋ถ„๋งŒ ์ ์Œ)

    public int update(BoardVO board); 

๋งค๊ฐœ๋ณ€์ˆ˜ ์ž˜ ์„ค๊ณ„ํ•˜๊ธฐ BoardVO ๋กœ ํ•ด์•ผํ• ๊ฒƒ์„ Long ์œผ๋กœ ์„ค๊ณ„ํ•จ

BoardMapper.xml์˜ ์ผ๋ถ€

    <update id="update">
        update tbl_board
        set title = #{title},
        content = #{content},
        writer = #{writer},
        updateDate = sysdate
        where bno = #{bno}
    </update>

SQL์—์„œ ์ฃผ์˜ ๊นŠ๊ฒŒ ๋ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์€ update ์นผ๋Ÿผ์ด ์ตœ์ข… ์ˆ˜์ •์‹œ๊ฐ„์„ ์˜๋ฏธํ•˜๋Š” ์นผ๋Ÿผ์ด๊ธฐ ๋•Œ๋ฌธ์—
ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ ๋ณ€๊ฒฝํ•ด ์ฃผ๊ณ  ์žˆ๋‹ค๋Š” ์ ๊ณผ, regdate ์นผ๋Ÿผ์€ ์ตœ์ดˆ ์ƒ์„ฑ ์‹œ๊ฐ„์ด๋ฏ€๋กœ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ž„
#{title}๊ณผ ๊ฐ™์€ ๋ถ€๋ถ„์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋œ BoardVO ๊ฐ์ฒด์˜ getTitle()๊ณผ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋“ค์„
ํ˜ธ์ถœํ•ด์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์ด ์ฒ˜๋ฆฌ๋จ

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” read()๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ€์ ธ์˜จ BoardVO ๊ฐ์ฒด์˜ ์ผ๋ถ€๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ์‹์ด๋‚˜
์ง์ ‘ BoardVO ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
์˜ˆ์ œ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•จ

BoardMapperTests ํด๋ž˜์Šค์˜ ์ผ๋ถ€

    @Test
    public void testUpdate() {
        BoardVO board = new BoardVO();
        board.setBno(5L);
        board.setTitle("update์ œ๋ชฉ");
        board.setContent("update๋‚ด์šฉ");
        board.setWriter("update์ž‘์„ฑ์ž");
        
        int count = mapper.update(board);
        log.info("UPDATE COUNT: " + count);
    }

Chapter 09 ๋น„์ฆˆ๋‹ˆ์Šค ๊ณ„์ธต

๋น„์ฆˆ๋‹ˆ์Šค ๊ณ„์ธต์€ ๊ณ ๊ฐ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜๋Š” ๊ณ„์ธต์œผ๋กœ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๊ณ„์ธต๊ณผ
์˜์† ๊ณ„์ธต์˜ ์ค‘๊ฐ„๋‹ค๋ฆฌ ์—ญํ™œ์„ ํ•˜๊ฒŒ๋จ
์˜์† ๊ณ„์ธต์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ด์„œ ์„ค๊ณ„๋ฅผ ๋‚˜๋ˆ  ๊ตฌํ˜„ํ•˜์ง€๋งŒ,
๋น„์ฆˆ๋‹ˆ์Šค ๊ณ„์ธต์€ ๋กœ์ง์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋จ.

์˜ˆ์ปจ๋Œ€, '์‡ผํ•‘๋ชฐ์—์„œ ์ƒํ’ˆ์„ ๊ตฌ๋งคํ•œ๋‹ค'๊ณ  ๊ฐ€์ •ํ•ด ๋ด„
ํ•ด๋‹น ์‡ผํ•‘๋ชฐ์˜ ๋กœ์ง์ด '๋ฌผ๊ฑด์„ ๊ตฌ๋งคํ•œ ํšŒ์›์—๊ฒŒ๋Š” ํฌ์ธํŠธ๋ฅผ ์˜ฌ๋ ค์ค€๋‹ค'๊ณ  ํ•˜๋ฉด
์˜์† ๊ณ„์ธต์˜ ์„ค๊ณ„๋Š” '์ƒํ’ˆ'๊ณผ'ํšŒ์›'์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ์„ค๊ณ„ํ•˜๊ฒŒ ๋จ.

๋ฐ˜๋ฉด์— ๋น„์ฆˆ๋‹ˆ์Šค ๊ณ„์ธต์€ ์ƒํ’ˆ ์˜์—ญ๊ณผ ํšŒ์› ์˜์—ญ์„ ๋™์‹œ์— ์‚ฌ์šฉํ•ด์„œ ํ•˜๋‚˜์˜ ๋กœ์ง์„
์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋จ

ํ˜„์žฌ ์˜ˆ์ œ๋Š” ๋‹จ์ผํ•œ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋Š” ์•„๋‹ˆ์ง€๋งŒ,
์„ค๊ณ„๋ฅผ ํ•  ๋•Œ๋Š” ์›์น™์ ์œผ๋กœ ์˜์—ญ์„ ๊ตฌ๋ถ„ํ•ด์„œ ์ž‘์„ฑํ•ด์•ผ ํ•จ.
์ผ๋ฐ˜์ ์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ์˜์—ญ์— ์žˆ๋Š” ๊ฐ์ฒด๋“ค์€ '์„œ๋น„์Šค(Service)'๋ผ๋Š” ์šฉ์–ด๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•จ

9.1 ๋น„์ง€๋‹ˆ์Šค ๊ณ„์ธต์˜ ์„ค์ •

๋น„์ฆˆ๋‹ˆ์Šค ๊ณ„์ธต์„ ์œ„ํ•ด์„œ ํ”„๋กœ์ ํŠธ ๋‚ด com.crow.service๋ผ๋Š” ํŒจํ‚ค์ง€๋ฅผ ์ž‘์„ฑํ•จ

์„ค๊ณ„๋ฅผ ํ•  ๋•Œ ๊ฐ ๊ณ„์ธต ๊ฐ„์˜ ์—ฐ๊ฒฐ์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๋Š์Šจํ•œ(loose) ์—ฐ๊ฒฐ(๊ฒฐํ•ฉ)์„ ํ•จ
๊ฒŒ์‹œ๋ฌผ์€ BoardService ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ BoardServiceImplํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•จ

BoardService ์ธํ„ฐํŽ˜์ด์Šค

package com.crow.service;

import java.util.List;

import com.crow.domain.BoardVO;

public interface BoardService {
    
    public void register();
    
    public BoardVO get(Long bno);
    
    public boolean modify(BoardVO board);
    
    public boolean remove(Long bno);
    
    public List<BoardVO> getList();
}

BoardService ๋ฉ”์„œ๋“œ๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ๋ฉ”์„œ๋“œ ์ด๋ฆ„์€ ํ˜„์‹ค์ ์ธ ๋กœ์ง์˜
์ด๋ฆ„์„ ๋ถ™์ด๋Š” ๊ฒƒ์ด ๊ด€๋ก€์ž„
๋ช…๋ฐฑํ•˜๊ฒŒ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” 'select'๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” ๋ฆฌํ„ด ํƒ€์ž…์„ ์ง€์ • ํ•  ์ˆ˜ ์žˆ์Œ
๊ฒŒ์‹œ๋ฌผ์€ ํŠน์ •ํ•œ ๊ฒŒ์‹œ๋ฌผ์„ ๊ฐ€์ ธ์˜ค๋Š” get() ๋ฉ”์„œ๋“œ์™€ ์ „์ฒด ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌํ•˜๋Š” getList()์˜ ๊ฒฝ์šฐ
์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฉ”์„œ๋“œ์˜ ๋ฆฌํ„ด ํƒ€์ž…์„ ๊ฒฐ์ •ํ•ด์„œ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

BoardService ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ตฌํ˜„์ฒด๋Š” BoardServiceImpl์ด๋ผ๋Š” ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„
ํด๋ž˜์Šค์˜ ์ƒ์„ธ ๋‚ด์šฉ์€ ์กฐ๊ธˆ ๋ฏธ๋ฃจ๊ณ , ์•ฝ๊ฐ„์˜ ๋กœ๊ทธ๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋„์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•จ

BoardServiceImpl ํด๋ž˜์Šค์˜ ์ผ๋ถ€

package com.crow.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.crow.domain.BoardVO;
import com.crow.mapper.BoardMapper;

import lombok.AllArgsConstructor;
import lombok.Setter;
import lombok.extern.log4j.Log4j;

@Log4j
@Service
@AllArgsConstructor
public class BoardServiceImpl implements BoardService {
    
    private BoardMapper mapper;
    
    @Override
    public void register() {
        // TODO Auto-generated method stub

    }
    ...

BoardServiceImpl ํด๋ž˜์Šค์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ @Service๋ผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ž„
@Service๋Š” ๊ณ„์ธต ๊ตฌ์กฐ์ƒ ์ฃผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ์˜์—ญ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒด์ž„์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ
์ž‘์„ฑ๋œ ์–ด๋…ธํ…Œ์ด์…˜์€ ํŒจํ‚ค์ง€๋ฅผ ์ฝ์–ด ๋“ค์ด๋Š” ๋™์•ˆ ์ฒ˜๋ฆฌ๋จ
BoardServiceImpl๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” BoardMapper ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•จ

์ด๋Š” @Autowired์™€ ๊ฐ™์ด ์ง์ ‘ ์„ค์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๊ณ , Setter๋ฅผ ์ด์šฉํ•ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์Œ
Lombok์„ ์ด์šฉํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

@Log4j
@Service
@AllArgsConstructor
public class BoardServiceImpl implements BoardService {
    
    @Setter(onMethod_ = @Autowired)
    private BoardMapper mapper;
...

์Šคํ”„๋ง 4.3๋ถ€ํ„ฐ๋Š” ๋‹จ์ผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š” ์ƒ์„ฑ์ž์˜ ๊ฒฝ์šฐ์—๋Š” ํ•„์š”ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ฃผ์ž… ํ•  ์ˆ˜ ์žˆ์Œ
@AllArgsContstructor๋Š” ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋Š” ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ์ฝ”๋“œ๋Š”
BoardMapper๋ฅผ ์ฃผ์ž…๋ฐ›๋Š” ์ƒ์„ฑ์ž๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋จ

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์—์„œ ํด๋ž˜์Šค๋ฅผ ์กฐ์‚ฌํ•ด ๋ณด๋ฉด ์Šคํ”„๋ง 4.3์˜ ์ž๋™์ฃผ์ž… ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ์•ž์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๊ฐ€๋จ
(201p ์•„๋ž˜ ๊ทธ๋ฆผ ์ฐธ์กฐ)

โš ๏ธ **GitHub.com Fallback** โš ๏ธ