Project

취업 준비, 프로젝트 리팩토링 중단 / 강의보기 시작

newny 2023. 8. 12. 05:06
반응형

리팩토링 순서

1. 테이블 재정의 → 테이블 정의서 새로 만들기 [20230727 테이블 정의서 완료]
2. erd 재정의 → 기존 erd 수정하기 [20230728 erd 수정 완료]
3. jar로 배포 → 기존 jsp 사용으로 인해 war로 설정했던 부분을 jar로 변경 [20230730 프로젝트 생성 완료]
4. 패키지 구조 변경 → 정리되어있지 않은 기존의 패키지 구조(특히 repository부분)를 변경 [20230730 구조 변경 완료]
5. 템플릿 엔진 thymeleaf로 바꾸기 → 기존의 jsp의 흔적 없애기, 불필요한 페이지나 버튼 제거 [20230731~ 진행 중]
6. 재정의된 테이블 구조에 맞는 프로젝트로 코딩 [20230731~ 진행중]
7. mybatis를 jpa로 변경(아직 공부가 안된 부분이 있어서 가장 마지막에 변경예정)

 

리팩토링을 하며 많은 의문점이 생겼다.

  • 한 서비스 안에서 두 개의 테이블 변경이 일어날 때 한 개의 테이블 변경에는 성공했으나, 다른 테이블변경은 실패했을 때 서비스에서 이루어졌던 모든 일들을 무효화할 수 있는 방법이 있는지
    • 데이터베이스 트랜잭션에 대해 공부해야한다는것을 구글링을 통해 알게 되었다. 김영한 님 강의를 찾아보니 DB 편에 강의가 있었다. 강의를 보고 적용은 했으나, 예외를 터트리는 부분이 없어서 실행이 되지 않았다. 예외 부분부터 다시 공부해야 함을 느꼈다.

 

  • 외부에서 직접 url을 통해 접근 시 로그인 페이지로 넘어가게 하고, 로그인 시 접근했던 url로 이동할 수 있는 방법
    • 현재 리팩토링 프로젝트에서는 redirectURL 이라는 파라미터를 넘기는 방식으로 만들긴 했으나 더 자연스러운 방법이 없는지 의문이 생겼다.

 

  • 리포지토리에서 DB로 값이 이동 할 때에는 entity 단위로 이동한다고 하는데, dto 단위로 들어온 값을 리포지토리에서 db로 옮길 때 entity로 일일이 변경해야 하는지
    • mapStruct를 사용하면 되는 건 구글링을 통해 알고 있지만, 그 원리를 제대로 파악하지 못했다. 또한 현재 리팩토링 버전은 마이바티스를 이용하기 때문에 entity가 무의미하다는 것을 깨달았다.(entity는 setter가 존재하면 안 되는데 마이바티스는 db에서 repository로 값을 넘길 때 setter를 이용하기 때문)
    • 내가 원하는 구조대로 리팩토링이 진행되려면 jpa가 필수적이라는 것을 알게 되었다.

 

  • 세션 사용이 보안에 안전한지
    • 세션이라는 부분은 어떻게 사용하는지에 대해서만 알고 있을 뿐, 그 원리에 대해서는 알지 못하고 사용하고 있다는 생각이 들었다. 이 부분에 대한 강의는 김영한 님 강의중 mvc 2편에 있었다.

 

김영한님 강의 커리큘럼 중 mvc 1편까지 완료한 상태이며, 이 정도 부분까지 본 후 리팩토링을 진행해도 괜찮을 줄 알았다.

하지만 의문점들이 생겼을 때 해결되지 않는 부분들이 아주 많았다. 해결됐다고 해도 원리를 알고 해결한 것이 아닌, 구글링으로 겉핥기식으로만 해결됐다는 것을 인지했다.

다시 김영한 님 강의를 들여다 봤고, 의문점들을 해결할 수 있는 방법이 김영한님 스프링 강의의 mvc 2편, DB 강의에 있음을 알게 되었다. 

 

그리하여 현 시간부로 리팩토링을 잠시 중단하고 강의먼저 완료할 계획이다.

반응형