개발자취

TIL | OpenAPI data기반 WebApp Project (3) 본문

개발/Dev | 웹개발

TIL | OpenAPI data기반 WebApp Project (3)

hnhnhun 2023. 8. 14. 02:29

본 글은 OpenAPI 데이터를 기반으로 WebApp을 생성하는 프로젝트의 과정을 담았다. 프로젝트 진행 과정을 정리한 글은 총 세 개의 글인 계획 및 Data 핸들링, 1차 기능 구현, 2차 기능 구현 및 검토로 이루어져 있고, 그 중에서 본 글은 2차 기능 구현 및 검토에 해당한다.

 

들어가며

2차 구현에서는 금방 해결될 것이라 예상했던 db 마이그레이션에서 꽤 시간이 오래 걸렸다. 그래서 발생했던 주요 이슈 및  이슈 해결 방안, 참고 자료를 순차적으로 정리해볼 것이다. 

 

주요 이슈

1. MaridDB to SQLite

SQLite는 서버가 없는 응용프로그램만 존재한다. 따라서 SQLite로 DB를 연결할 때 라이브러리를 mariadb-jdbc에서 sqlite-jdbc로 교체만 해주면 될 것이라는 생각이었다. 그런데 과정이 생각보다 순탄치 않았다. db 생성 경로가 C 드라이브에 생성된 db 폴더로 지정됐었는데, db 폴더에 접근할 때 문제가 있었기 때문이다. db가 존재하지 않으면 query 문으로 db를 생성하고, db가 존재하면 db를 open 하여 작성해둔 query로 테이블에 접근해야 했다. 그런데 db가 생성은 물론이고, open 자체가 되지 않아서 예외처리가 계속 발생했다. 그래서 처음에는 파일 시스템 권한의 문제라고 생각하여 db에 접근하는 폴더에 모든 권한을 부여했다. 그러나 이슈를 해결하지 못했다. 그래서 구글링한 결과 어떤 원인인지는 확실하게 알아내지 못했지만, IntelliJ를 관리자 권한으로 실행하는 방법을 적용해보기로 했다. 이때는 jdbc로 db 연결하는 데 있어서 문제가 전혀 발생하지 않게 되었다. 굉장히 찝찝한 점은 문제를 해결은 했으나, 원인을 알지 못한 상태로 남아있는 것이다. 며칠동안 구글링을 해보고, 프로젝트를 새롭게 생성해서 sqlite-jdbc를 연결하여 db에 접근해봤으나 문제 해결은 할 수 없었다. 관리자 권한으로 실행되는 IntelliJ가 아니면 이 문제가 계속 발생한다는 것만 알게 되었고, 그 이상으로 해결하진 못했다.

sqlite로 db 마이그레이션을 할 수 없을 뻔한 이 상황에서 참고했던 링크를 아래에 추가해본다.

(1) SQLite  DB연결/해제

https://heodolf.tistory.com/139

 

[JAVA] SQLite 무작정 시작하기 (1) - DATABASE 연결/해제

서론 이번에 Quartz로 Crawler 스케줄러를 만들면서 수집한 데이터를 저장하고 이력을 관리하기위한 저장소가 필요했다. Oracle, MariaDB, MongoDB 등 다양한 선택지가 있었지만, 필요할 때마다 서버를 실

heodolf.tistory.com

 

(2) SQLite CRUD

https://velog.io/@zihoo/SQLite-JDBC

 

SQLite + JDBC + CRUD

SQLite + JDBC + CRUD

velog.io

 

(3) 파일 접근 이슈를 관리자 권한으로 실행해서 해결하도록 아이디어를 제공한 글

https://stackoverflow.com/questions/51127812/intellij-windows-10-sqlite-access-denied

 

Intellij Windows 10 SQLite Access denied

This is a Java Project which connect to a sqlite database. I didn't really know where is the problem, I am making a login app to my manager here is my code: package dbUtil; import java.sql.Connect...

stackoverflow.com

file permission check > intellij open as admin permission

 

2. 완성된 WebApp을 실행해보고, 초기에 기능 구현을 위한 영상과 비교해보니 페이지 몇 개가  누락된 것을 알게  되었다. 기능적인 측면도 보완이 필요하다고 생각하여 누락된 jsp를 추가했고, 예외처리에 필요한 데이터 유효성 검사를 추가하여 불필요한 데이터가 db에 검색 쿼리에 전달되지 않도록 로직을 수정했다.

새롭게 참고한 링크는 따로 없다. 기존에 구현된 결과를 활용했다. 

 

3. Data 관련 변수 및 북마크 변수의 get, set 부분을 숨겨주고 싶었다. 지저분한 코드를 정리하기 위한 방법으로 Lombok 라이브러리 사용했다. 이때 참고한 링크는 다음과 같다.

https://zzang9ha.tistory.com/349

 

[Java] - Project Lombok(롬복)

• 안녕하세요~ 이전에 운영하던 블로그 및 GitHub, 공부 내용을 정리하는 Study-GitHub 가 있습니다! • 네이버 블로그 • GitHub • Study-GitHub • 🐔 📎 Lombok(롬복) 안녕하세요! 이번에 정리할 내용은 P

zzang9ha.tistory.com

 

마치며

이번 DB 마이그레이션 이슈를 해결하기 위해 프로젝트 설정의 문제인가 싶어서 프로젝트 초기 설정을 여러번 반복해보기도 했다. 그래서 프로젝트 초기 설정에 대한 반복 작업이 조금 익숙해지게 되었다. 만약 프로젝트를 다시 생성한다고 하면 pom.xml만 읽고도 프로젝트를 설정할 수 있게 된 점에서는 많은 것을 배우긴 했다.

이렇게 이득인 경험으로도 볼 수 있지만, 살짝 찝찝한 기분은 남아있다. 왜냐하면 Windows11의 파일 권한의 문제가 분명한 것인가에 대해서는 정확하게 확인하지 못했기 때문이다. 아웃풋은 나왔는데, 중간 과정을 하나의 절대적인 실행 조건(run as admin permissions)으로 무력화 시켜버린 점에 대해서는 다른 해결방안이 필요해보이긴 하다. 이틀 동안 많은 방법들을 보면서 간신히 얻어낸 해결방안이긴 하지만, 뭔가 naive한 방법처럼 느껴지기 때문에 좀 그럴듯한 방법이나 왜 이렇게 할 수 밖에 없는지에 대한 근거를 찾을 필요는 분명하게 존재한다.

결과를 기간 내에 냈다는 점에서는 발전했지만, 문제 접근과 해결 관점에서는 아직도 부족한 부분이 많은 것  같다. 이런 부분은 단시간에 성장하기 어렵고, 프로젝트를 자꾸 만들어보며 능력치를 키우는 수밖에 없을 것 같다. 많은 성장을 요구한 프로젝트를 진행하게 되어서 굉장히 유의미한 경험을 했다고 본다. 하지만 여기서 그치지 않고 좀 더 근본적인 문제를 해결하는 능력을 키우도록 연습해야 할 것이다.

마지막으로 확인하는 프로젝트 일정 계획이다. 3차검토 및 제출이 8/11(금)에 모두 끝났다는 점에서는 잘했다고 본다. 근데 너무 무리하면서 프로젝트를 진행한 것은 아닌가 싶기도 하다. 그렇지만 잘 마무리를 했다는 점에서, 맛있는 것을 먹으면서 자축해야겠다. 

7월말부터 8월 중순까지 진행되는 OpenAPI 프로젝트 일정


Comments