📑 개요지난번에 작성했던 블로그의 내용은 완전 기초적인 내용 및 설정에 대해서 설명을 했다면 이번에는 세부적으로 샘플 코드를 작업하면서 나온 내용에 대해서 정리를 하고 작업 간에 했던 생각을 적어 보려고 한다. :) 📕 구조BackEnd내가 이번 프로젝트에서 잡은 구조는 도메인 구조이다. 계층형 구조와 도메인 구조에 대해서 비교를 하는 블로그들을 많이 보았다.내용을 살펴보면 알겠지만 정답은 없다. 장단점에 따라서 프로젝트에 맞는 구조를 사용해서 개발을 진행하면 된다. (유지보수를 위해서라도) 본론으로 돌아와서 도메인 구조를 잡은 이유에 대해서 설명하도록 하겠다.패키지별 분리를 했을때 내용을 파악하는데 더 쉽다고 판단프로젝트 개발간에 기획이 변경되는 상황이 많이 발생하는데 이때 유리하다고 판단확장성을 ..
Spring Boot
📑 개요신규 프로젝트 작업을 해야 하는 상황이 있어서 이번 기회에 spring boot, kotlin과 vue 최신 버전을 기준으로 초기 세팅 작업을 했고 이 과정을 기록하려고 한다. 버전에 따라 없어진 내용도 존재하고, 추가된 내용도 존재하니 체크를 해보는 게 좋을 거 같다. 아래의 이미지는 이번에 프로젝트를 작업 하면서 만든 패키지 구조이다. (참조용) 📑 기술 스택BackEndjava 21자바의 미래라고 불리는 virtual thread를 사용해보고 싶어서 버전을 21 이상을 사용하려고 생각했고 21이 LTS 버전이라서 사용하게 되었다.kotlin 1.9.23spring boot 3.2.4DGS 8.6.0넷플릭스에서 개발한 GraphQL 프레임워크이다. 예전에 한번 내용일 살펴보고 테스트를 해봤..
⚡ 개요 Spring boot 2.6.x 버전이 2024년 2월달 부로 지원이 종료가 된다. :( 아직 까지는 크게 문제가 없지만 결국은 버전을 올려야 하며, 내부 버전을 마이그레이션을 하기로 생각했다. 아마 추가적으로 다른 내용들도 정리를 하고 있지만 가장 먼저 QueryDsl 의 Dialect의 사용 방식이 변경돼서 이 부분에 대해서 정리를 하려고 한다. 공식 문서 및 관련 자료를 찾아도 방법에 대해서 공유를 해놓은 사람이 없어서 내부 클래스를 분석해서 사용 방법을 재정의 했다. 이에 대한 내용을 정리해보려고 한다. 📚 버전 정보 현재 테스트를 할떄 필요한 버전 정보만 공유하도록 하겠다. Spring boot 2.6.x ==> Spring boot 2.7.18 ==> Spring boot 3.0.18..
⚡ 개요 내부적으로 spring boot 2.6.6 버전을 사용 중이며, 이제 곧 2.6.x 버전의 지원이 종료가 된다. java 21 도 나왔고, 가상 스레드를 실무에서 사용해 보고 싶은 생각도 있다. 겸사겸사 spring boot에 대한 버전을 업데이트하면서 변경된 내용과 오류를 잡은 과정에 대해서 내용을 정리하려고 한다. 일단 먼저 내부적으로 사용중인 일부 라이브러리 버전에 대해서 공유하도록 하겠다. (이외 다른 라이브러리도 사용 하고 있지만 버전을 올리면서 문제가 발생하는 경우에만 따로 버전 및 이슈를 공유하도록 한다.) spring boot 2.6.6 java 17 queryDsl 5.0 spring boot 를 버전을 올리면서 이외 다른 라이브러리 버전도 올려야 하는 부분이 발생할 수도 있다...
⚡ 개요 save()와 saveAndFlush()의 차이점에 대해서 정리하기 전에 결론부터 얘기하면 두 개의 함수 모두 메서드가 끝나는 시점에 DB에 데이터가 저장이 된다. @Transactional 어노테이션에 따라서 동작하는 방식의 차이는 있을 수 있지만 결론은 동일하다. 아래의 사용 방법에 대해서 보기 전에 JPA 영속성에 대해서 잘 모른다면 한번 찾아보고 내용을 본다면 좀 더 도움이 된다. 추가적으로 JPA 영속화 과정에 대해서 정리를 하려고한다. ⚡ 사용 방법 📔 save() entity 데이터 한건을 저장하는 데 사용을 하는 함수이다. entity의 키의 존재 여부를 판단하고 신규 entity라고 판단을 하면 영속성 상태로 바꾸고 기존에 존재하는 entity이면 준영속 상태를 영속 상태로 바꿔..
⚡ 개요 Spring Boot에서 QueryDsl을 사용하는 방법에는 여러 가지 방법이 존재한다. 내가 가장 많이 사용하는 방식은 queryFactory를 이용하는 방식을 사용한다. 회사에서 개발을 하면서 단일 테이블 기준으로 데이터를 뽑아낼 수 있는 부분이 적고 데이터량이 많다. 이외, 다른 방식들이 있는데 이부분에 대해서 정리를 하면서 잘못 쓰고 있는 부분이 있는지 체크를 해보려고 한다. ⚡ 사용 방법 querydsl을 사용하는 이유부터 생각을 해보자. 만약 spring boot JPA 및 JPQL을 사용해서 쿼리를 구현 한다고 생각해봤을때 단건 조회 또는 적당한 조건에 따른 조회는 크게 문제가 되지 않는다. 하지만 쿼리가 복잡해지고 조건이 많아지는 순간 실수가 발생할 가능성이 존재하고 유지보수에 어..
⚡ 개요 이전에 이미 Jenkins 구축의 경우 해보았고, 내용을 정리 했기 때문에 설정이 필요한 부분 및 배포 및 자동 실행 관련 내용만 정리 하도록 했다. ⚡ 배포 관련 가이드 내용 정리 일단 버전을 업데이트 했더니, 로그인 화면이 바뀌어서 올려봤다. 가장 먼저 해야되는 부분의 경우 SSH Server를 등록 해야한다. SSH Server를 등록하기전에 이전 포스팅 내용을 참조해서 Spring Boot 서버를 구축 해놓은 상태여야 한다. 세부적인 내용에 대해서 설명 하고 넘어가도록 하겠다. 이 내용을 본다면 설정이 가능 하다. Name : 등록하고 싶은 명칭 아무거나 상관이 없다. Hostname : Spring Boot 서버의 url 정보를 입력하면 된다. ex) 192.0.0.1 UserName ..
⚡ 개요 내부 테스트 서버에 구축 및 배포를 할때, 기존에는 docker 위에 tomcat을 올리고 serveice를 구축하는 방식을 사용 했었다. 하지만 jar 파일로 빌드를 하고 jenkins를 통해서 자동 배포 및 자동 실행을 하려고 하면서 리눅스 서버를 구축하고 그위에 서비스를 구축하는 방식으로 작업을 진행했다. 구축을 진행한 내용 및 문제가 발생했던 부분에 대한 내용을 정리해 놓으려고 한다. ⚡ Spring Boot Server 구축 가이드 내용 정리 일단 기본적으로 Docker는 구축이 되어있다는 가정하에 가이드 내용을 정리 했다. 기본적으로 Window에서 Docker를 설치하는 방법은 Desktop 전용 및 Daemon만을 실행해서 하는 두가지 방법이 존재한다. Desktop의 경우는 메모..
⚡ 개요 웹 개발을 하면서 DB는 매우 중요한 요소이다. 데이터에 대해서 저장, 갱신, 관리, 검색등 여러 가지의 작업을 통해서 결과물을 도출하고 있다. 웹 개발을 시작하면서는 DB에 대해서 그냥 조회 잘하고 저장 잘하면 끝이라고 생각했던 때가 있었다. 맞는 말이 될 수도 있지만 웹 개발을 오래 하다 보면 많이 중요하다... 내가 사용하고 있는 DB의 장점, 라이브러리, 속도 향상 등등에 대해서 정리를 하려고 한다. ⚡ HikariCP 란?? HikariCP는 Java 언어를 위한 고성능 JDBC (Java Database Connectivity) 커넥션 풀 라이브러리이다. 커넥션 풀은 데이터베이스 연결을 관리하고 재사용하여 애플리케이션의 성능을 향상하는 데 사용이 되고 HikariCP는 빠른 시작 속도..