본문 바로가기

전체 글190

[Dev] 23.02.22. 게시글 검색 기능 이리저리 작업하다가 게시글 페이징 작업이 마지막이라고 생각했는데, 생각해보니 검색 기능을 작업하지 않았다는 것이 생각났다. 이번 게시글에는 검색 기능을 작업했던 내용을 기록해보려고 한다. 작업 아이디어 아이디어는 특별하지 않다. Client에서 html form tag를 통해 보내는 request parameter를 활용할 것이며, 보내는 request parameter의 값에 따라 동작하는 query를 다르게 하도록 하는 것이다. 작업 navibar.html 제목 작성자 내용 검색 보통은 client 에 대한 작업 이미지 설명은 거의 하지 않았던 것 같은데, 이번에는 하나 기록할 것이 있어서 이미지를 가져왔다. 필자는 검색 keyword를 입력하고 검색을 요청한 뒤 그에 대한 응답을 받을 때, 검색 시.. 2023. 2. 22.
[Dev] 23.02.20. 게시글 목록 페이징 처리 (Pagination) 아마 이번 페이징 작업이 당분간의 마지막 작업이 될 것 같다. 처음 계획에는 카테고리 별로도 구분하는 것도 있었으나, 그것은 게시글 목록에 대한 페이징 처리 이후 조금씩 작업하기로 결정했다. 현재 게시글 목록은 따로 페이징 처리가 되어있지 않은 채로 모든 게시글의 목록을 불러오고 있다. 하지만 필자는 몇 개씩을 그룹으로 묶어 페이징 처리를 하고 싶다. 이를 위해 JPA 강의 중에 간단한 Paging 방법을 소개하는 것까지 살펴보고 작업을 시작했다. 아이디어는 간단하다. 페이징 UI를 가장 먼저 만들고, 그에 대한 요청을 GET 방식으로 주어서 게시글 중에 N번째 부터 몇 개씩만을 조회하도록 하는 것이다. 늘 그래왔듯 이번에도 알 수 없는 오류에 직면하거나 필자가 생각하지 못한 방향으로 흘러갈 수는 있겠으.. 2023. 2. 20.
[Dev] 23.02.17. 중복된 조회의 원인과 그 해결 (feat. OSIV) 현재 일부 게시글 data를 조회하는 query 가 동작할 때, 두 번씩 동작하는 것을 테스트 과정에서 몇 번 보게 되었다. 이에 대한 원인을 분석하고, 수정하는 방안을 모색해보려고 한다. 게시글을 모두 작성하고 난 뒤 가장 앞에 작성하고 있지만, 결과적으로 필자는 OSIV Filter 를 활용하지 않기로 했다. 원인 분석 사실 필자는 '영속성' 에 대해서 아직도 명확하게 알고 있지 않다. 그나마 알고 있는 점은 영속성이라는 것이 하나의 Transaction(트랜잭션) 안에서만 유지되는 것이 일반적이라는 것이다. 그래서 추정한 것이 실제로 어딘가에서 해당 조회를 하고 있다는 생각인데, 그 주인공이 바로 Interceptor였다. 필자는 이전에 게시글을 수정하거나 삭제하는 요청에 대해서 로그인 한 사용자가.. 2023. 2. 17.
[Dev] 23.02.06. 게시글 삭제 시 query 변경 (feat. modify delete query) 이전 게시글에서 회원 탈퇴 시 data를 삭제하는 과정에 대해 작업한 것처럼 기존의 삭제 과정에 대한 query도 변경해볼 것이다. 지난 게시글에서의 작업은 다음과 같았다. 두 번의 사용자 data를 조회하는 select query 각각 1개 (총 2개) 삭제하고자 하는 게시글 data를 조회하는 select query 1개 (총 1개) 타 게시글의 댓글 작성자를 수정하는 update query 1개 댓글, 게시글의 참조 링크, 게시글 data를 삭제하는 delete query 각 1개 (총 4개) 삭제할 사용자의 권한을 조회하는 select query 1개 삭제할 사용자의 권한, 사용자의 data를 삭제하는 delete query 각 1개 (총 3개) 위 항목에서 동일한 과정을 거쳐야하는 것은 2번의 .. 2023. 2. 6.
[Dev] 23.02.03. 회원 탈퇴 기능 (with. modify delete query) 회원 탈퇴 기능을 마지막으로 기획했던 마이 페이지에서의 모든 기능은 구현이 완료된다. 하지만 기능에서 동작하는 query 에 대한 고민이 계속되는 중에 여러 게시글을 일괄적으로 삭제하는 기능에 대해 동작하는 query 에서도 다른 query가 동작했으면 하는 바람이 있었다. 회원 탈퇴 기능으로 인해 동작하는 query 또한 사실 거기에 사용자의 정보를 하나 더한 delete query가 동작하는 것만이 다르다. 따라서 회원 탈퇴 기능을 구현하면서 delete query가 다르게 동작하도록 수정하는 것이 이번 작업의 목표이다. 작업 회원 탈퇴 기능 구현 my-page.js document.querySelector("#exitBtn").addEventListener("click", function(e){ v.. 2023. 2. 3.
[Dev] 23.01.29. 게시글 일괄 삭제 게시글을 삭제하는 기능은 사실 이미 구현되어 있다. 하지만 필자가 계획했던 것은 사용자의 마이 페이지에서 삭제하고 싶은 게시글을 일괄적으로 선택하여 삭제할 수 있도록 하는 기능도 있었다. 따라서 우선 해당 페이지를 먼저 구축해야 한다. 이후에 동작할 기능은 사실 동일한 것이기 때문이다. 게시글을 일괄적으로 삭제하는 기능에 대한 작업이지만, 사실 두 작업은 동일한 logic 으로 통일하게 될 것이다. 작업 menucheckbox.html 내 글 삭제하기 삭제 메뉴 이름 게시글을 일괄적으로 삭제하기 위한 template을 작성했다. 이는 기존에 게시글 목록을 불러오는 template에서 약간 수정된 것이다. my-page.css .stackBox{ position: relative; } .deleteBox{.. 2023. 1. 29.