[Mini Project] 밝은빛 도서관-2

JUNHO YEOM·2023년 1월 5일
0

2일차, 3일차 JavaFX를 이용한 화면 만들기

2일차, 3일차에는 대부분의 시간을 자바FX의 코드를 구현하는데 시간을 보냈다.
DB를 사용하는 방법을 익히고, Java에 익숙해 지는것이 이번 프로젝트의 목표인 만큼
UI를 최대한 간단하고, 대부분의 UI를 최대한 재활용 가능하게 기획하여
JavaFX로 화면을 만드는 시간을 줄이려 했지만,
순수하게 코드로 화면을 구성하는 것은 생각보다 많은 시간을 필요로 했다.
정말 아쉽지만, 2일이라는 시간을 JavaFX에 사용할 수 밖에 없었다.


4일차

아직... 한발 남았다...JavaFX

JavaFX로 화면을 80퍼센트정도 구현하는데 성공했다.
하지만...
처음에 화면을 만들 때는 화면을 구성하는 모든 코드를 Main Class에 담았다.
하지만, 코드가 점점 많아지면서 코드를 작성하는 시간보다 내가 쓴 코드를 찾는 시간이 길어지기 시작했다.
순간, 코드 정리의 필요성을 느껴 각 메인 클래스에 모두 모여있던 코드를 분할하는 작업을 시작했다.
Scene Builder를 사용하는 사람들을 보고 나도 써볼까...? 하는 마음이 들었지만
이미 너무 멀리 와버린게 아닐까... 라는 생각이 들어서 JavaFX로 계속해서 프로젝트를 진행했다.



본격적인 기능구현!

어느정도 화면 구현이 끝나고, Controller와 Service, DAO를 제작하여
기능을 구현하기 시작했다.
그동안은 버튼을 눌러서 페이지를 이동하는 JavaFX만 동작하는 코드였다면,
이제부터는 정말 DB와 연결하여 무언가 동작하는 프로그램이 만들어 졌다.
제일 처음 제작한 것은 도서 조회 기능과 도서 대여 기능이었다.
도서 대여 프로그램의 가장 핵심적인 기능이라고 생각했기 때문에 높은 우선 순위를 두고 만들었다.

이제 우리 도서관도 대출 가능 합니다.



DB 작업!

book_lent 테이블 생성

CREATE table book_lent
(
lent_id int primary key auto_increment,
book_lent_status boolean not null default true,
book_lent_date DATETIME default NOW(),
book_return_date DATETIME NOT NULL, 
book_actural_return_date DATETIME,
book_isbn varchar(50) not null,
user_id char(20) not null,
foreign key (book_isbn) references library.book (book_isbn),
foreign key (user_id) references library.user (user_id)
);

SQL을 이용하여 book_lent 테이블을 생성해 주었다.
기존 JavaScript에서 GraphQL을 이용하며 코드로만 테이블 관계를 생성해 준 경험이 있었지만,
이미 계획은 다 해놨으니 쉽지 않을까? 하고 생각했지만,
그건 생각일 뿐이었다.
DB참 어렵다
SQL문을 직접 이용하여 table 관계 구축 하고 테이블을 생성해 준 경험이 없어서 검색 해가면서 차근차근 진행해 나갔다.


book 테이블 컬럼 수정

기존에 데이터로 받아 지정된 Column의 경우
btitle의 형식으로 구분을 더 쉽게 하기 위해서(개인적으로 해당 형식이 마음에 들지 않아서)
book_title의 형식으로 Column을 수정하였다.
기존에 기본으로 제공되는 자료에 들어가 있던 데이터중
도서 대출 기능에 중요성이 크지 않은 bsupplement Column(도서 구입시 추가 증정품 항목)은 삭제해 주었다.

도서관에서는 CD같은 증정품이 필요 없잖아요?



사용한 SQL Query

-- 컬럼 추가하기
ALTER TABLE book add book_lent_status char(20) default '대여가능';

ALTER TABLE book add book_update DATE;

-- 컬럼 삭제하기
alter table book drop bsupplement;

-- 컬럼 이름 바꾸기 
ALTER TABLE book
RENAME COLUMN bisbn TO book_isbn;

ALTER TABLE book
RENAME COLUMN btitle TO book_title;

ALTER TABLE book
RENAME COLUMN bdate TO book_date;

ALTER TABLE book
RENAME COLUMN bpublisher TO book_publisher;

ALTER TABLE book
RENAME COLUMN bauthor TO book_author;

0개의 댓글