⚡ 개요개발 단계에서 발생한 session 이슈가 있어서 해당 내용을 정리 하려고 한다. 운영 단계에서는 발생할 가능성이 적은 내용이며 보안상의 이슈이기 때문에 간단하게만 정리하고 넘어가려고한다. 특정 데이터를 통신 과정에서 유지하기 위해서 session, cookie, token 등 여러가지 방법이 존재한다.Spring boot session 을 검색만 하더라도 어떻게 구현을 해야하는지도 나온다. 물론 개념적으로 더 알면 좋지만 검색을 하고 따라만 하더라도 개발자 도구에서 쿠키를 확인 해보면 session ID가 들어오고 유지되는 부분을 확인 할수가 있다.로그인 페이지를 구현하고 테스트 하는 과정에서 계속 session에 저장되지 않고 새로운 session이 생기는 이슈가 발생해서 내용을 정리하게 되었..
⚡ 개요spring boot + vue 프로젝트를 진행할 때, vue에서 router를 설정했지만, 새로고침을 하는 순간 404 에러 페이지가 로드되는 이슈에 대해서 내용 및 수정 방법에 대해서 정리를 하려고 한다. 일단 기본적으로 404가 나오는 이유에 대해서 설명하자면 새로고침을 하는 순간 spring에서 servelt에 맵핑된 주소를 찾는데 없기 때문에 404가 발생하는 것이다. 단순하게 컨트롤러에 전부 맵핑을 해준다면 해결되는 이슈이기도 하다. Vue는 SPA이고, index.html 페이지 내에서 모든 동작이 이뤄지도록 되어있다. 페이지 이동을 몇 번을 하던 결국은 index.html 페이지 하나에서 동작한다고 보면 된다. ⚡ History Modevue 공식 문서를 확인 해보면 History ..
⚡ 내용속도적인 이슈로 인해서 일부 queryFactory를 사용하는 부분을 SQLQueryFactory로 변경을 했다.이때 조회 방식은 동일하지만 내부 구현체가 좀 달라서 그런지 LocalDate 타입으로 반환하는 결과값이 이상하게 나오는 부분이 있어서 정리를 하려고 한다.⚡ 이슈 정리나는 오늘 날짜를 기준으로 데이터를 조회 했지만 하루전 데이터가 나와서 데이터가 꼬이는 부분이 발생을 했다.실제 결과 값에 대한 디버그를 해보니 하루전 데이터가 나오고 있었다. 최근에 변경한 부분이 queryFactory 를 sqlQueryFactory로 변경한 부분이 있어서 실제 결과 값을 만드는 부분에 대해서 클래스 내용을 확인 해보니 반환하는 부분에서 좀 이상한 부분이 있어서 공유를 하려고 한다. 아래의 이미지는 실..
⚡ 개요최근에 프로젝트를 하면서 신규로 적용했던 내용을 정리하려고 한다. 일단 공식 가이드 문서가 순차적으로 잘 되어있기 때문에 공식 가이드를 먼저 보는 걸 추천한다 (링크) 공식 가이드 문서가 잘 되어 있기때문에 설치에 대한 내용은 보고 따라 하는 게 편하다. vue cli를 통해서 라이브러리를 추가하는 방법도 존재하고, 이미 프로젝트가 존재하는 경우에도 추가하는 방법이 자세히 설명되어 있다. ⚡ 사용 이유공식 가이드에 따른 장점과 내가 적용을 하면서 느낀 사용 이유에 대해서 정리를 해놓으려고 한다. 📗 공식 가이드 문서 기준 사용 이유 (링크)1. 지원 범위가 넓다.React를 기준으로 가이드가 작성되어 있지만 다른 FrontEnd 프레임 워크를 지원 하고 있다. 2. HTTP 네트워크 통신아마..
📑 개요지난번에 작성했던 블로그의 내용은 완전 기초적인 내용 및 설정에 대해서 설명을 했다면 이번에는 세부적으로 샘플 코드를 작업하면서 나온 내용에 대해서 정리를 하고 작업 간에 했던 생각을 적어 보려고 한다. :) 📕 구조BackEnd내가 이번 프로젝트에서 잡은 구조는 도메인 구조이다. 계층형 구조와 도메인 구조에 대해서 비교를 하는 블로그들을 많이 보았다.내용을 살펴보면 알겠지만 정답은 없다. 장단점에 따라서 프로젝트에 맞는 구조를 사용해서 개발을 진행하면 된다. (유지보수를 위해서라도) 본론으로 돌아와서 도메인 구조를 잡은 이유에 대해서 설명하도록 하겠다.패키지별 분리를 했을때 내용을 파악하는데 더 쉽다고 판단프로젝트 개발간에 기획이 변경되는 상황이 많이 발생하는데 이때 유리하다고 판단확장성을 ..
📑 개요신규 프로젝트 작업을 해야 하는 상황이 있어서 이번 기회에 spring boot, kotlin과 vue 최신 버전을 기준으로 초기 세팅 작업을 했고 이 과정을 기록하려고 한다. 버전에 따라 없어진 내용도 존재하고, 추가된 내용도 존재하니 체크를 해보는 게 좋을 거 같다. 아래의 이미지는 이번에 프로젝트를 작업 하면서 만든 패키지 구조이다. (참조용) 📑 기술 스택BackEndjava 21자바의 미래라고 불리는 virtual thread를 사용해보고 싶어서 버전을 21 이상을 사용하려고 생각했고 21이 LTS 버전이라서 사용하게 되었다.kotlin 1.9.23spring boot 3.2.4DGS 8.6.0넷플릭스에서 개발한 GraphQL 프레임워크이다. 예전에 한번 내용일 살펴보고 테스트를 해봤..
⚡ 개요근본적으로 동적 쿼리를 작성해야 하는 이유가 뭘까에 대해서 생각을 해봐야 한다.데이터 베이스의 테이블 구조 또는 사용자 입력에 따라 조건 변경, UI에 따른 세부 조건 변경등 여러가지 이유가 있을수 있다. 만약 조회 하는 테이블은 같은데 조건만 달라지는 경우라면 동적 쿼리를 사용하지 않는다면 중복된 코드가 발생하고 이는 생산성 및 유지보수 측면에서 좋지 않은 결과를 가져온다고 생각을 한다. 예전에는 myBatis에서 쿼리를 작성할떄는 동적으로 param을 보내서 조회 하도록 작업을 하고 있었을 것이며, JPA를 사용 하는 개발자의 경우 초기에는 어떻게 동적 쿼리를 작업 해야하는지 모르는 사람한테 유용한 정보가 될거라고 생각한다. 내가 JPA를 사용하면서 동적 쿼리 및 배치 쿼리를 작업하는 방법에 ..
⚡ 개요 내부에서 JPA를 사용하면서 entity에서 Cascade 옵션을 사용한 개발자분이 있었고, 이때 일부 데이터가 아무 값 없이 생성이 되거나 삭제되는 이슈가 발생을 했다. 다행히 문제점이 Cascade에 있다고 판단을 해서 수정을 했지만 실제 고객사에 반영이 되었다면 큰 문제가 발생했을것이다. 그래서 사용시 주의 사항 및 내용을 정리 하려고 한다. 📒 Cascade (영속성 전이) 특정 엔티티를 영속상태로 만들 때 연관관계에 있는 엔티티도 함께 영속상태로 만들기 위해서 사용한다. 부모 엔티티를 다룰때 연관 되어있는 자식 엔티티까지 다룰수 있게 해준다. JPA에서는 Cascade 을 통해서 영속성을 다룰수 있도록 도와준다. 이와 관련된 옵션들이 존재한다. CascadeType.ALL: 모든 Cas..
⚡ 개요 개발 중이던 신규 프로젝트가 어느덧 배포를 하는 단계까지 왔다. 👋👋👋 배포를 준비를 하면서 릴리즈 버전을 계시하고 특정 고객사에서 필요한 연동과 앞으로의 신규 개발들을 진행해야 해서 브랜치도 나누고 태그도 다는 과정에서 이 부분을 정리해 놓으면 좋을 거 같아서 작성하게 되었다. 태그와 릴리즈를 사용하는 가장 큰 이유는 당연히 버전을 쉽게 관리하고 배포하는데 중점이 있다고 생각한다.브랜치를 따거나 git 변경 사항에 특정 버전 및 내용에 대해서 규칙을 정하고 적는 것도 좋겠지만 좀 더 쉽게 버전을 체크하고 관리할 때 좋다고 생각을 한다. 내가 사용을 할때 가장 중점적으로 생각한 부분은 우리 개발팀에 새로 들어오더라도 우리와 같이 사용할 때 거부감이 없어야 된다고 생각했다. 분명 회사별로 관리하는..