[DataBase] Oracle + MyBatis SQL
·
Project/Database
📝 개요Spring Boot + MyBatis + Oracle DB 로 프로젝트를 진행하면서 Oracle 의 쿼리 문법은 기본적으로 좀 더 엄격하거나, 특이한 부분이 많다고 느겼다. MySQL 에서는 당연하게 되었던 것들이 Oracle 로 변경되면서 새롭게 알아가는 것도 있었고, 새로운 문법을 익혀야 하는것도 있었다. 다음은 Groupware 백엔드를 구현하면서 알아보았던 Oracle DB 의 SQL 문법과 MyBatis 에서 Oracle 을 사용했을 때의 특징과 사용에 대해서 설명한다.🚀 Oracle vs MySQL1️⃣ 시퀀스(Sequence) vs AUTO_INCREMENTMySQLPK 자동 증가 컬럼이 테이블에 존재한다.INSERT 시 값 입력을 따로 하지 않으면 AUTO_INCREMENT 설..
[Groupware] Database : Oacle DB 세팅
·
Project/Database
📝 개요Oracle Database(오라클 DB)는 세계적으로 많이 사용되는 상용 관계형 데이터 베이스 시스템 중 하나이다. 강력한 안정성, 보안, 대규모 데이터 처리에 최적화 된 아키텍처 덕분에 금융, 공공, 대기업 등 다양한 실무 현장에서 표준처럼 사용한다. Oracle Database 를 선택한 이유는 회사 및 고객 사이트에서 Oracle DB 를 사용하고 있고 그룹웨어 프로젝트 또한 사내 그룹웨어를 모방한 프로젝트이기 때문에 동일한 환경을 구축하기 위해 사용했다. 개인 프로젝트에서는 오픈소스 DB인 MySQL 과 MariaDB를 사용하면서 MyBaits 와의 연동을 통해서 구축했던 경험이 있지만, 오라클 특유의 구조와 쿼리 최적화, PDB 등 최신 기능을 학습하기 위해 Oracle DB 를 선택..
[Groupware] Spring-Boot : Spring Security + JWT
·
Project/Backend
📝 개요Groupware 프로젝트는 Spring-Boot 백엔드 API 서버 구축과 React 프론트엔드 서버 구축 및 연동 학습에 중점을 둔 프로젝트이다. 이전 YBoard (게시판) 프로젝트에서 Spring Security 를 이용하여 보안 부분에 대한 프레임 워크를 사용했었는데, REST API 구조에서의 Spring Security 활용에 대해서 학습하기 위해서 보안 및 인증에 대한 라이브러리로 선택하게 되었다. 이전 프로젝트에서는 세션 인증 방식을 사용하면서 다중 서버에서의 중복 로그인 문제, Spring Security 의 세션 관리에 대해서 학습했지만, 이번 프로젝트는 프론트엔드와 백엔드가 분리되고 REST API 방식의 서버 구현이므로 새로운 인증 방식에 대한 부분을 찾아보았다. 그렇게 ..
[Groupware] React : Route (라우팅 설정)
·
Project/Frontend
📝 개요라우팅은 사용자가 URL 을 이동할 떄 그에 맞는 화면 컴포넌트를 보여주는 구조를 의미한다. SPA(Single Page Application) 인 React 에서는 실제로 페이지를 새로고침하지 않고 URL 경로에 따라 필요한 컴포넌트만 렌더링하거나 교체하는 방식으로 동작한다. React 에서 라우팅을 구현하기 위해 사용하는 대표적인 라이브러리가 react-router-dom 이다. 이를 통해 페이지 이동, URL 파라미터 처리, 라우트 보호, 리다이렉트 같은 기능을 손쉽게 구현할 수 있다. 프로젝트에서는 로그인 상태 (accessToken) 를 기준으로 인증 여부를 판단하고 인증되지 않은 사용자는 /login 페이지로 이동되도록 한다. 모든 실제 화면은 / 루트 아래에서 와 을 통해 보여지..
[Groupware] React : axios (API 통신)
·
Project/Frontend
📝 개요Backend 서버와 Frontend 서버와의 HTTP 통신을 위해 axios 라이브러리를 사용한다. axios 를 사용하는 이유는 fetch() 와 비교했을 때 비교적 코드가 간결하고 직관적이기 때문이다. 또한, Interceptor 기능을 통해서 JWT 가 적용되어 있는 Backend 에서 매 요청 마다 헤더에 토큰을 적용하는데 효율적이기 때문이다.다음은 Groupware Frontend 서버에 적용되어 있는 axios 공통 설정에 대해서 설명한다.🚀 axios1️⃣ import 및 CustomAxiosRequestConfig type 설정import axios, { type AxiosRequestConfig } from 'axios';type CustomAxiosRequestConfig ..
[Groupware] Spring-Boot : API 공통 응답 객체
·
Project/Backend
📝 개요API (Application Programming Interface)백엔드 서버가 프론트엔드(혹은 외부 시스템) 에 데이터를 주고받는 통로이다. 흔히 사용하는 “로그인”, “데이터 조회”, “등록” 과 같은 기능을 만들 때 서버는 API 를 통해 클라이언트의 요청을 받고, 처리 결과를 다시 응답으로 돌려준다. JSON(JavaScript Object Notation)대부분의 API 응답은 JSON 형식으로 전달된다. 단순히 데이터만 반환하는게 아니라 상태코드, 메세지, 실제 데이터 를 한번에 담아 보내는 것이 중요하다. 이것을 일관성 있게 관리하기 위해서 공통 응답 객체를 만들어 모든 API 반환 값을 같은 구조로 감싸도록 설계했다.🚀 API 공통 응답 객체API 공통 응답 객체를 도입하기 ..
[Groupware] Spring-Boot : Swagger 연동
·
Project/Backend
📝 개요Swagger?Swagger 는 REST API 를 쉽고 명확하게 문서화할 수 있는 오픈소스 프레임워크이다. 기존에는 API 명세서를 별도로 작성하여 (엑셀, Notion 등..) 관리가 어렵고 오류도 많았지만, Swagger 사용하면 실제 코드로부터 명세를 자동 추출 하여 최신 API 문서를 유지할 수 있다. 또한, Swagger UI 를 통해서 API 테슽와 시연이 편리하여 기획/테스트/FE 와의 협업 효율성이 증가한다. Swagger 도입 이유현재 프로젝트는 요구사항을 정리하는 Notion 에 DTO, Controller 에 대한 설계와 정의를 통해서 명세하고 있지만, API 수가 많아지고 FE 개발 및 설계를 위해서 도입하게 되었다. 🚀 SwaggerAPI 문서 자동화 프레임워크는 여러..