# 개요
학원 다니면서 개인 프로젝트로 플래너 개발을 해보기로 했다.
처음에는 타이머로 시작했다가 내가 생각했던 방향이 아닌거 같아서 플래너로 바꿨다.
처음에 타이머로 생각한 이유는 단순히 뽀모도로 타이머(https://chromewebstore.google.com/detail/focus-to-do-%EB%BD%80%EB%AA%A8%EB%8F%84%EB%A1%9C-%ED%83%80%EC%9D%B4%EB%A8%B8-+-%EC%97%85%EB%AC%B4/ngceodoilcgpmkijopinlkmohnfifjfb?pli=1)를 개발하려고 했기 때문인데.. 코드 작성하다보니 타이머가 돌아가는 로직은 프론트에서 간단하게 처리 할 수 있다고 생각했기 때문이다.
원래는 프로젝트 개발진행하면서 블로그도 같이 쓰려고했는데, 개발 중간에서야 작성하게 됐다 ㅎㅎ;
데이터베이스(Mysql)을 추가하고 프로젝트와 연결하는 과정
# EC2에 데이터 베이스(Mysql) 설치
데이터베이스는 학원에서 오라클을 배웠지만, Mysql을 사용하기로 했다. Mysql을 선택한 이유는
- 내 로컬(노트북)에는 데이터베이스 프로그램이 설치되어 있지 않은데 굳이 설치하고 싶지 않았다. 그렇다면 어떤 원격의 데이터베이스를 이용해야 한다.
- 학원 컴퓨터를 항상 켜 놓은 상태로 두고 원격 데스크톱 연결을 통해 노트북에서 학원 컴퓨터로 접속해서 개발을 진행 → 학원 공유기를 포트 포워딩 해야하는데 공유기 비밀번호를 모르기 때문에... 패스
- 내장 데이터베이스인 H2를 사용 → 기왕 사용하는거 데이터베이스 설치해서 사용하자라는 생각으로.. 패스
- 옛날에 AWS를 사용해봤으니까 복습한다는 생각으로 EC2 인스턴스에 데이터베이스를 설치하여 사용하는 것으로 결정!
- 오라클을 설치하는 과정이 꽤나 복잡해서 Mysql을 선택했다. (근데 Mysql도 생각보다 복잡하더라..)
- RDS라는 서비스도 있긴 했는데 사용해본적이 없어서 우선 EC2에 설치해서 사용해보다가 RDS도 사용 해보기로..
EC2에 Mysql 설치하는 과정
# 내 프로젝트와 연결, CRUD 기능 구현
Mysql jdbc인 Mysql Connector를 통해 EC2에 설치된 Mysql과 연결했다.
그 과정에서 기존에 Controller의 List에 저장했던 Plan 객체들을 Database에 저장하도록 수정했다.
CRUD 기능에 대한 메서드를 구현했는데 Connection을 생성하는 부분이 중복되어서 JdbcTemplate에 데이터베이스와 연결하는 코드를 분리하여 작성하였다.
Connection 이후 PreparedStatement를 이용해서 Query에 객체 필드들을 매핑해주고 executeUpdate()(CUD) / executeQuery() (R)을 통해 쿼리를 실행했다.
이후 필요에 따라 데이터베이스 row를 자바 Object로 매핑 후 반환했다.
# 간단 회고
저 커밋 하나에 내용이 너무 많아서 여전히 읽기 힘들다 ㅜㅜ 커밋 작게하는 습관을 들여야하는데 생각보다 쉽지않다
database 연결할 때 접속 계정과 패스워드가 필요한데, Github에 올릴 때는 그걸 빼고 올려야 하는데 같이 올려버렸다... 이번 경우에는 EC2 인스턴스를 중지 후 재시작 함으로써 hostname이 변경 되었기 때문에 크게 상관 없겠지만 이런 정보는 별도의 파일로 만들어서 .gitignore에 해당 파일을 추가하거나 환경 변수로 구성하는 방법으로 보완해야겠다는 생각이 들었다.
'Java > 플래너 개발 일지' 카테고리의 다른 글
플래너 개발 일지(6) 배포 및 미니 프로젝트 발표 (1) | 2024.02.24 |
---|---|
플래너 개발 일지(5) - Console view to Web view 변환 (1) | 2024.02.24 |
플래너 개발 일지(3) - Gradle 사용, Linter 적용, Planner로 변환 (0) | 2024.02.17 |
플래너 개발 일지(2) - RUD 기능 추가 (0) | 2024.02.17 |
플래너 개발 일지(1) - 개요, Create기능 추가 (0) | 2024.02.17 |