2022_02_05 - oneso123456789/2022 GitHub Wiki
Other
์๊ตฌ์ฌํญ์ ๋ฐ๋ฅธ ํ๋ฉด ์ค๊ณ
์๊ตฌ์ฌํญ์์ ๋์ค๋ ์ฉ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ํ
์ด๋ธ์ด๋ ํด๋์ค๋ค์ ์ด๋ฆ๋ค์ด ์ ํด์ง๋ฏ์ด,
์๊ตฌ์ฌํญ์ ํ๋ฉด์๋ ์ํฅ์ ๋ฏธ์น๊ฒ ๋จ.
'๊ณ ๊ฐ์ด ์๋ก์ด ๊ฒ์๋ฌผ์ ๋ฑ๋กํ ์ ์์ด์ผ ํ๋ค'๋ฉด ๋น์ฐํ ๊ทธ์ ํด๋นํ๋ ํ๋ฉด์ ๊ตฌ์ฑํจ
์ด ๊ตฌ์ฑ์ '์ด๋ค ๋ด์ฉ๋ค์ ์
๋ ฅํ๊ฒ ๋ ๊ฒ์ธ๊ฐ'์ ์ธ๋ถ์ ์ธ ์ค๊ณ๊ฐ ๋๊ณ ,
์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ํ
์ด๋ธ์ด๋ ํด๋์ค์ ๋ฉค๋ฒ ๋ณ์(์ธ์คํด์ค ๋ณ์)๋ค์ ์ค๊ณํ๊ฒ ๋จ.
์ค์ ํ๋ก์ ํธ์์๋ ๊ฒฐ๊ณผ๋ก ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด '์คํ ๋ฆฌ ๋ณด๋'๋ฅผ ๋ง๋ค๊ฒ ๋จ..
p168 ์คํ ๋ฆฌ ๋ณด๋ ๊ทธ๋ฆผ์ฐธ๊ณ (์ด๊ฑด ๊ทธ๋ฆด์๊ฐ ์์ด ..)
ํ๋ฉด ์ค๊ณ์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ
์ด๋ฌํ ํ๋ฉด์ ์ค๊ณํ ๋๋ ์ฃผ๋ก Mock-up(๋ชฉ์
) ํด์ ์ด์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
๋ํ์ ์ผ๋ก๋ PowerPoint๋ Balsamiq studio, Pencil Mockup ๋ฑ์ SW๋ฅผ ์ด์ฉํด์ ์์ฑํจ
ํ๋ฉด์ค๊ณ์ ๋ฐ์ดํฐ ํ๋ฆ
๊ฐ ํ๋ฉด์ ์ค๊ณํ๋ ๋จ๊ณ์์๋ ์ฌ์ฉ์๊ฐ ์
๋ ฅํด์ผ ํ๋ ๊ฐ๊ณผ ํจ๊ป ์ ์ฒด ํ์ด์ง์ ํ๋ฆ์ด ์ค๊ณ๋จ
์ด ํ๋ฉด์ ํ๋ฆ์ URL๋ก ๊ตฌ์ฑํ๊ฒ ๋๋๋ฐ ์ด ๊ฒฝ์ฐ GET/POST ๋ฐฉ์์ ๋ํด์๋
๊ฐ์ด ์ธ๊ธํด๋๋๊ฒ์ด ์ข์
์์ ํ๋ก์ ํธ ๊ตฌ์ฑ
์์ ํ๋ก์ ํธ ex02 ์์ฑ Spring Legacy Project๋ก ์์ฑ
pom.xml ์์ , ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ด๋ จ ์ฒ๋ฆฌ, ์คํ๋ง MVC ์ฒ๋ฆฌ๊ฐ์ ์์๋ก ์งํ
pom.xml ์์
์คํ๋ง ๋ฒ์ (5.0.7)๊ณผ Java(1.8) ๋ฒ์ ์ ์์ ํจ
์คํ๋ง ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ spring-tx, spring-jdbc, spring-test ์ถ๊ฐ
MyBatis๋ฅผ ์ด์ฉํ ๊ฒ์ด๋ฏ๋ก HikariCP, MyBatis, mybatis-spring,
Log4jdbc์ถ๊ฐ๋ฑ๋กํ ๋ log4jdbc-log4j2๊ฐ ๋ฉ์ด๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ๋งคํ๊ฒ ๊ฒ์๋จ
์ ํํ ๋ฒ์ 4๋ฅผ ๋ฃ์ด์ผํจ 4.1๋ ์์ผ๋ ํผ๋ ์กฐ์ฌ
ํ
์คํธ์ Lombok์ ์ํด์ jUnit ๋ฒ์ ์ ๋ณ๊ฒฝํจ
jUnit์ ๊ฒฝ์ฐ ๊ธฐ์กด 4.7 ๋ฒ์ ์์ 4.12๋ก ๊ผญ ๋ณ๊ฒฝํด์ผํจ
Servlet 3.1(ํน์ 3.0)์ ์ ๋๋ก ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๊ธฐ์กด์ ์๋ธ๋ฆฟ 2.5๊ฐ ์๋
3.0 ์ด์ ๋ฒ์ ์ผ๋ก ์์ ํด์ค์ผํจ
์ฌ๊ธฐ์ 3.1.0๋ฒ์ ์ผ๋ก ์์ ํ์
๋ํ JDK8์ ๊ธฐ๋ฅ์ ํ์ฉํ๊ธฐ ์ํด์ Maven ๊ด๋ จ Java ๋ฒ์ ์ญ์ 1.8๋ก ์์ ํจ
pom.xml ์์ ์ ์๋ฃ ํ๋ค๋ฉด
ex02ํ๋ก์ ํธ๋ฅผ Maven์์ Update Project๋ฅผ ์คํํด์ค
๋ง์ง๋ง์ผ๋ก oracle JDBC Driver๋ฅผ project Build Path, Deployment Assembly์ ์ถ๊ฐํด์ค
(์ฌ๊ธฐ์ ์ฌ์ฉํ๋ ค๋ ์์
ํ๊ฒฝ์์ ๋ชจ๋ jdbc8 ๋๋ผ์ด๋ฒ๋ฅผ ๊ฐ์ ๊ฒฝ๋ก์ ๋ฃ์ด์ค์ผํจ)
ํ ์ด๋ธ ์์ฑ๊ณผ Dummy(๋๋ฏธ) ๋ฐ์ดํฐ ์์ฑ
SQL Developer๋ฅผ ์ด์ฉํด์ ํํธ 1์์ ์์ฑํ book_ex ๊ณ์ ์ ํตํด์ ํ
์ด๋ธ์ ์์ฑํด์ค
๊ฒ์๋ฌผ์ ๊ฐ ๊ฒ์๋ฌผ๋ง๋ค ๊ณ ์ ์ ๋ฒํธ๊ฐ ํ์ํจ,
์ค๋ผํด์ ๊ฒฝ์ฐ ์ํ์ค(sequence)๋ฅผ ์ด์ฉํด์ ์ด๋ฌํ ์์
์ ์ฒ๋ฆฌํจ
ํ ์ด๋ธ ์์ฑ ์ํ์ค ์์ฑ
create sequence seq_board;
create TABLE tbl_board(
bno NUMBER(10,0),
title VARCHAR2(200) not null,
content varchar2(2000) not null,
writer varchar2(50) not NULL,
regdate date DEFAULT SYSDATE,
updatedate date DEFAULT SYSDATE
);
alter table tbl_board add CONSTRAINT pk_board
PRIMARY key(bno);
commit;
์ํ์ค๋ฅผ ์์ฑํ ๋๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ค๋ฅธ ์ค๋ธ์ ํธ๋ค๊ณผ ๊ตฌ๋ถํ๊ธฐ ์ํด์
'seq_'์ ๊ฐ์ด ์์ํ๋๊ฒ ์ผ๋ฐ์ ์
ํ
์ด๋ธ์ ์์ฑํ ๋๋ 'tbl_'๋ก ์์ํ๊ฑฐ๋ 't_'์ ๊ฐ์ด ๊ตฌ๋ถ์ด ๊ฐ๋ฅํ ๋จ์ด๋ฅผ
์์ ๋ถ์ฌ์ฃผ๋ ๊ฒ์ด ์ข์.
tbl_board ํ
์ด๋ธ์ ๊ณ ์ ์ ๋ฒํธ๋ฅผ ๊ฐ์ง๊ธฐ ์ํด bno ์นผ๋ผ์ ์ง์ ํ๊ณ ,
์ ๋ชฉ(title), ๋ด์ฉ(content), ์์ฑ์(writer)๋ฅผ ์นผ๋ผ์ผ๋ก ์ง์
ํ
์ด๋ธ์ ์ค๊ณํ ๋๋ ๊ฐ๋ฅํ๋ฉด ๋ ์ฝ๋์ ์์ฑ ์๊ฐ๊ณผ ์ต์ข
์์ ์๊ฐ์ ๊ฐ์ด ๊ธฐ๋ก
ํ๋ ๊ฒ์ด ์ข๊ธฐ ๋๋ฌธ์ ์์ฑ์๊ฐ(regdate)๊ณผ ์ต์ข
์์ ์๊ฐ(updatedate) ์นผ๋ผ์ ์์ฑ
์ด๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก sysdate๋ฅผ ์ง์ ํด์ ๋ ์ฝ๋๊ฐ ์์ฑ๋ ์๊ฐ์ ์๋์ผ๋ก ๊ธฐ๋ก๋ ์ ์๊ฒํจ
ํ
์ด๋ธ ์์ฑ ์ดํ์๋ 'alter table..'์ ์ด์ฉํด์ Primary Key(์ดํ PK)๋ฅผ ์ง์ ํด ์ฃผ์์
PK๋ฅผ ์ง์ ํ ๋ 'pk_board'๋ผ๋ ์ด๋ฆ์ ๋ถ์ฌํ๋๋ฐ,
์ด ์ด๋ฆ์ ๋ค์์ ์ค์ํ๊ฒ ์ฌ์ฉ๋๋ฏ๋ก ๋ฐ๋์ ์๋ฏธ๋ฅผ ๊ตฌ๋ถํ ์ ์๊ฒ ์์ฑํด ์ค์ผํจ
์ํ์ค(seq_)๋ ํ
์ด๋ธ(tbl_)์ฒ๋ผ pk_๋ก ๋ง๋ค๋ฉด ๋๋ค๋ ๋ป
๋๋ฏธํ ์ดํฐ์ ์ถ๊ฐ
ํ
์ด๋ธ์ ์์ฑํ๊ณ ๋๋ฉด ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด ์ฃผ๋๋ฐ ์ด๋ฐ ์๋ฏธ ์๋ ๋ฐ์ดํฐ๋ฅผ ํํ
'ํ ์ด ๋ฐ์ดํฐ(toy data)' ํน์ '๋๋ฏธ ๋ฐ์ดํฐ(dummy data)'๋ผ๊ณ ํจ
tbl_boardํ ์ด๋ธ์ ๋๋ฏธ๋ฐ์ดํฐ ์ ๋ ฅ
insert into tbl_board (bno,title,content,writer)
VALUES (seq_board.nextval, 'ํ
์คํธ ์ ๋ชฉ','ํ
์คํธ ๋ด์ฉ','user00');
tbl_board์ bno ์นผ๋ผ์ ๋งค๋ฒ ์๋ก์ด ๊ฐ์ด ๋ค์ด๊ฐ์ผ ํ๋ฏ๋ก seq_board.nextval์ ์ด์ฉํด์
๋งค๋ฒ ์๋ก์ด ๋ฒํธ๋ฅผ ์ป์
regdate์ updatedate ์นผ๋ผ์ ๊ธฐ๋ณธ์ผ๋ก ํ์ฌ ์๊ฐ์ด ๋ค์ด๊ฐ๋ฏ๋ก, ๋ณ๋์ ์์
์ด ํ์ํ์ง ์์
๊ตณ์ด ์ถ๊ฐํด ์ฃผ๋ ค๋ฉด sysdate๋ฅผ ์จ์ฃผ๋ฉด๋จ ๊ทธ๋ฆฌ๊ณ sysdate + 1 ์ ์ฌ์ฉํ๋ฉด ํ๋ฃจ ๋ค ๋ ์ง๊ฐ ์
๋ ฅ๋จ ^์ค^
์ค๋ผํดdb๋ ๋ฐ์ดํฐ๋ฅผ insert ํ ํ ์ฃผ์ํด์ผ ํ๋ ์ ์ด commit์
MySQL๊ณผ ๋ฌ๋ฆฌ ์ค๋ผํด์ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ์ ๋ํ ๊ฐ๊ณต ์์
ํ ๋ฐ๋์ commit์ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ผํจ
๋ช
๋ น์ด๋ฅผ ์ด์ฉํ๊ฑฐ๋ sqldeveloper ํ๋ฉด ์์ชฝ์ ์ปค๋ฐ ๋ฒํผ์ ๋๋ฌ์ ํด์ฃผ๋ฉด๋จ
insert๋ฅผ ์ฌ๋ฌ๋ฒ ์คํํ ํ์๋ 'select'๋ฌธ์ ์ด์ฉํด์ ๋ฐ์ดํฐ๊ฐ ์ ์์ ์ผ๋ก ์ ๋ ฅ ์ฒ๋ฆฌ ๋์๋์ง ํ์ธ
๋ฐ๋์ ์๋ ์ปค๋ฐ ํด์ค์ผํจX์คX