이전 강의에서는
새로운 Angular UI 애플리케이션을 설정했습니다
그러나 현재까지 우리의 백엔드 애플리케이션에서는
모든 REST 서비스에 대해 문자열을
응답으로 반환하고 있습니다
계정 컨트롤러를 확인해보면
REST API에 대해 문자열 값을
반환하고 있습니다 그리고 나머지 서비스들에 대해서도
동일한 작업을 하고 있습니다
ContactController를 보면
동일한 것을 하고 있습니다
NoticesController 또한 동일합니다
이러한 문자열 응답들은
Angular UI 애플리케이션에 좋게 보이지 않습니다
우리는 실시간 애플리케이션을 만드려는 것이기 때문에
좋은 정보를 보내야 하고
실제 데이터와 비슷한 정보를
UI 애플리케이션으로 보내어
accounts 정보, loans 정보, notices 정보 등을
엔드 유저에게 표시할 수 있어야 합니다
이를 위해서는
이 섹션에서는
백엔드 애플리케이션 안에서 상당한 변경을 수행할 것입니다
마찬가지로 먼저, 새로운 Maven 프로젝트를 생성합니다
이 섹션에서만 사용될 예정입니다
제가 이제 무엇을 할 것이냐면
이 springsecuritysection5 프로젝트를
같은 폴더에 복사하고 springsecurity6라고
이름을 수정해 줍니다
이름을 수정했으면 pom.xml을 열어줍니다
pom.xml에서 몇가지 값들을 수정할 겁니다
여기서 이 artifactId를 수정할 건데
이유는 이것도 springsecurity6로 바꿔주기 위함입니다
변경사항들을 저장해줍니다
그 다음엔 target 폴더 안에 내용물들을
지워보겠습니다
다 지웠습니다
이제 우리는 IntelliJ IDEA로부터
이 프로젝트를 불러와야 합니다
그러니 Spring security section 5 프로젝트에 쓰였던
클래스들은 모두 닫겠습니다
File → New를 누르고
Module from Existing Sources (기존 소스에서 모듈 불러오기)를 누르면
springsecuritysection6를 선택할 수 있습니다
또 그 안에서 pom.xml를 선택하고
open 버튼을 누릅니다
이렇게 Maven 프로젝트를
워크스페이스로 가져왔습니다
Maven을 클릭합니다
Maven 프로젝트를 전부 다시 불러 오려고 합니다
프로젝트에 필요한 모든 dependencies들을
다운 받기 위함입니다 안 되어있을 경우를 대비해서
dependencies가 전부 다운 받아졌다면
Springsecuritysection6를 우클릭 하여
Build Module 오셥을 누르면
프로젝트가 생성되고 프로젝트 안에 있는
모든 Java 클래스들이 컴파일 됩니다
이 과정은 제가 갖고 있는 Maven dependencies에 기반하여 이루어집니다
비지니스 로직들도
수정하기 전에
우선 지원 가능한 데이터베이스 계획이 필요합니다
모든 비지니스 시나리오들을 수용하기 위함입니다
마찬가지로
저는 데이터베이스 안에 새로운 테이블을 생성할 것입니다
데이터베이스 안에 3개의 테이블이 있는데
모두 지워줍니다
더 이상 필요없기 때문입니다
이제 새로운 테이블로 시작해 볼 것입니다
새로운 테이블을 생성하기 위해서는
미리 스크립트들을 만들어두었으니
붙여 넣어 보겠습니다
이 스크립트들을 설명하기 전에
제 윈도우 창 크기 좀 키워 보겠습니다
처음 2개의 스크립트들은 실행할 필요가 없습니다
이미 EasyBank 데이터베이스가 있기 때문이고
EasyBank 데이터베이스만을
기본 데이터베이스로 사용하기 때문입니다
이 두 스크립트 다음에 실행할 수 있는 스크립트로는
"drop table: users", "authorities" 와 "customer" 가 있습니다
이 작업은 제가 갖고 있는 세 개의 테이블을 삭제할 것입니다
스크립트들을 실행시켜 보겠습니다
스크립트들을 실행시키고 나면
재접속하는 게 좋겠습니다
그래야 데이터베이스 테이블들이 새로고침 될 것입니다
재접속해보겠습니다
그 전에 로그아웃부터 하고 재접속 하겠습니다
이제 EasyBank를 열면 아무 테이블도 없는데
테이블들이 성공적으로 삭제되었다는 뜻입니다
이제 첫 번째로 만들어 볼 테이블은
customer 테이블입니다
customer 테이블의 열로는
customer_ID, name, email, mobile_number, pwd, role
그리고 create_dt 같은 것들을 설정해 줍니다
기본 키는 customer_ID입니다
이 customer_ID는 최종 사용자에게 부여되는 것입니다
그래서 같은 ID들은 외래키로
다른 모든 테이블들과 링크됩니다
일단 이 문장을 생성을 실행하여
이 테이블을 만들어 보도록 하겠습니다
걱정 하지 마십시오 여기 나온 스크립트들은 전부
GitHub 리포지터리에 제공할 것입니다
쿼리가 성공적으로 생성되었습니다
이곳을 보면 똑같이 확인해 볼 수 있습니다
쿼리가 성공적으로 생성됐다는 것을 확인할 수 있습니다
이제 또 다른 테이블들고 그 안에 데이터들을
생성하기 전에
엔드 유저 정보나 최종 고객 정보가
적어도 하나는
테이블 안에 있어야 합니다
동일하게 제가 insert 쿼리를 만들었으니
이 insert 쿼리를 통해 customer 쿼리를 만들 수 있습니다
데이터베이스 안에서 말입니다
예를 들어 고객 이름이 Happy고 이메일은 happy@example.com
전화번호는 이렇고... 등등
이 비밀번호는 문자 "12345" 가 Bcrypt 암호화가 된 것입니다
여기에 직접적으로 언급해놓았습니다
제가 이 유저에게 주고 싶은 역할은 admin이며
create_dt는 현재 날짜입니다
지금 insert 문장을 사용하는 이유는
우리의 등록 API가
오로지 이메일과 비밀번호만 받을 수 있는데
다른 열에서는 이를 받지 못하기 때문입니다
그래서 스크립트의 실행이 완료된 후
수정을 해보도록 하겠습니다
지금은 우선 insert 문장을 실행하고
적어도 한 명의 유저라도 데이터베이스에 있도록 합니다
그 다음 등록 API를 활용해
어떻게 엔드 유저를 만드는지 보여드리겠습니다
그 전에 최신 테이블을 기반으로
백엔드 코드를 수정하도록 하겠습니다
일단 스크립트를 실행해보겠습니다
행이 성공적으로 삽입되었습니다
다음으로 만들 테이블은 Accounts 입니다
이 테이블은 customer의 account 정보를 담고
customer ID 열은 전에 만든 customer 테이블과
외래키로 링크 시킵니다
Account 테이블의
기본키는 account number 이고
account_type, branch_address
creat_dt를 위한 열들도 있습니다
물론 이 테이블 안에 있어야 합니다
그럼 이 테이블도 만들어 보겠습니다
성공적으로 테이블이 생성되었습니다
이 테이블 안에 account 정보들
예를 들어 customer_ID 같은 것들을 삽입합니다
왜냐하면 이전에 만든 insert 쿼리가 무엇이든
그 고객은 customer_ID를 1로 갖게 되기 때문입니다
그래서 customer_ID를
1로 사용하는 것이 중요하며
그래야 외래키 링크가 잘 작동합니다
account_number는 이거고
account_type은 savings고
이건 branch_address 와 current_dt 입니다
다시 insert 문장을 실행해보도록 하겠습니다
그 다음으로는 account_transaction 테이블도 있는데
최종 사용자의
거래내역을 보관할 것입니다
transaction_ID, account_number, customer_ID
transaction_date, transaction_summary, transaction_type
transaction_amount, closing_balance, created_dt 가 있습니다
전부 테이블 안에 있는 열입니다
이 테이블은 customer_ID를 외래키로
customer 테이블과 링크되어 있습니다
이 테이블을 생성하겠습니다
그 다음엔 account_transactions를 위해
적절한 양의 insert 쿼리를 입력해줍니다
이는 시험용 데이터이며
엔드 유저에게 사용내역을 보여주는
가상 상황을 연출해보기 위함입니다
insert 스크립트들을 전부 실행해 보겠습니다
accounts_transaction 다음으로는
Loans 테이블을 생성해보겠습니다
Loans 테이블에는
엔드 유저의 대출 정보가 있고
이 테이블도 마찬가지로 외래기를 사용해
customer 테이블과 연동하겠습니다
Loans 테이블을 생성하고 나서
insert 스크립트를 사용해서
대출 관련 데이터들을 생성하려고 합니다
insert 스크립트 다음에는
cards 테이블도 생성하도록 하겠습니다
엔드 유저의 카드 정보를 다룰 예정이고
이 테이블도 마찬가지로 외래키를 통해
customer 테이블과 연동됩니다
그러니 이걸 실행 시키고, 그 다음에
카드와 관련된 스크립트들을 데이터베이스 안에
insert 시킵니다
그리고 cards 다음에는 notice_details 테이블입니다
notice_details 테이블에는
공지 정보들을 저장할 것이며
공지사항(Notices) 페이지에 표시될 수 있도록 할 겁니다
테이블을 생성하겠습니다
notice_details 와 관련된 스크립트들을
적당량 insert 하겠습니다
그래서 이 기록들이 공지사항 페이지
보내지고 보여질 수 있도록 합니다
스크립트들을 삽입해 보겠습니다
notice_details 다음으로는
마지막 테이블입니다
바로 contac_ messages 테이블입니다
이 테이블은 누군가
문의하기(contact) 페이지에 쿼리 정보나 연락처 정보를 제출할 때
사용합니다
그 정보들을 보관하기 위해서는 테이블이 필요하지 않겠습니까?
그래서 이 테이블을 만드는 겁니다
마찬가지로 create script를 실행시켜 보겠습니다
그러면 데이터베이스에 필요한 모든 테이블과
기록들을 생성했습니다
접속을 종료하고 재접속 해보겠습니다
그래야 테이블들이
제대로 생성됐는지 확인할 수 있을 것입니다
다행히 모두 잘 생성되습니다
클릭해 볼 수 있습니다
안에는 기록들이 있습니다
accounts 안에도 데이터가 있고
cards 안에도 데이터가 있습니다
customer도 확인해보겠습니다
customer 안에는 customer_details와 함께
password들이 있습니다
이로써 데이터가 잘 삽입되었다는 것이 확인됐습니다
강의를 마치기 전에
제가 할 수 있는 건
오늘 생성한 모든 스크립트들을
프로젝트 안에 있는 scripts.sql에 복사하겠습니다
springsecuritysection6과
resources 폴더에는 SQL 폴더가 있습니다
script.sql 열어보면
이전 프로젝트에서 사용했던
스크립트들이 있습니다
스크립트를 전부 삭제해주고
방금 실행했던 새로운 스크립트들을
붙혀 넣습니다
GitHub 리포지터리를 참고해서
이 스크립트를 전부 복사하십시오
꼭 기존 테이블들은 삭제하고 나서
새로운 테이블을 생성하기 바랍니다
그러면 이번 강의에서는 성공적으로 데이터베이스를
구축했습니다
다음 강의부터는 백엔드 프로젝트를
수정하는 시간을 갖도록 하겠습니다
감사합니다 다음 강의 때 뵙겠습니다