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

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ด€๋ จ ์„ค์ •