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

데이터 베이스 관련 설정