ORM 엔티티 설계: Single Table, Table Per Class, Joined Table
처음에는 소설, 웹툰, 드라마, 영화와 같은 각각의 콘텐츠 유형에 대해 독립적인 엔티티를 만들어 관리하려고 했습니다. 하지만 콘텐츠 유형이 다양해질수록 공통된 속성을 공유하는 상위 클래스 Content를 만들어 상속 구조를 설계하는 것이 더 효율적이라고 판단했습니다. 왜 상속 구조가 유용할까? 공통된 속성 관리 모든 콘텐츠가 공통적으...
처음에는 소설, 웹툰, 드라마, 영화와 같은 각각의 콘텐츠 유형에 대해 독립적인 엔티티를 만들어 관리하려고 했습니다. 하지만 콘텐츠 유형이 다양해질수록 공통된 속성을 공유하는 상위 클래스 Content를 만들어 상속 구조를 설계하는 것이 더 효율적이라고 판단했습니다. 왜 상속 구조가 유용할까? 공통된 속성 관리 모든 콘텐츠가 공통적으...
로컬 환경에서 MySQL을 사용하다가 프로젝트가 진행되면서 Docker로 환경을 옮기게 됐다. Docker 환경으로 전환하면서, 로컬에서 작업했던 데이터가 Docker에서도 있을 거라 생각했다. 하지만 Docker 컨테이너에는 아무 데이터도 없었다. 로컬과 Docker는 완전히 별개 환경이기 때문에 데이터가 자동으로 전환되지 않는다는 점을 깨달았다. ...
개발 환경 spring boot 3.2.2 react 18.2.0 Node.js 18.x docker 27.1.1 mysql 8.0.36 Gradle 프로젝트 구조 및 환경 이전에는 Spring Boot와 React를 통합 환경에서 작업했습니다. 즉, 백엔드 프로젝트 내에 프론트엔드를 포함한 형태였고, 배포할 때도 하나...
자료구조란? 자료구조는 데이터를 효율적으로 저장하고 관리하는 방법입니다. 우리가 프로그래밍할 때 데이터가 많아지면, 데이터를 어떻게 관리하느냐에 따라 프로그램의 성능이 크게 달라집니다. 그래서 데이터를 잘 정리하고, 필요한 정보를 빠르게 찾을 수 있도록 하는 것이 자료구조의 역할입니다. 배열, 스택, 큐, 트리 같은 것들이 자료구조에 속합니다. 자료...
Spring Security의 보안 필터 체인 Spring Security에서 필터 체인은 웹 애플리케이션의 요청(Request)과 응답(Response)을 처리하기 위해 사용하는 여러 필터의 연속입니다. 필터는 요청이 서버에 도달하기 전에 또는 응답이 클라이언트로 가기 전에 보안 검사를 하고, 필요에 따라 작업을 합니다. Spring Securit...
Spring Security란? Spring Security는 Java 애플리케이션에서 보안을 관리하는 데 도움을 주는 프레임워크입니다. 주로 인증과 권한 부여를 처리하는 데 사용됩니다. 인증은 사용자가 누구인지 확인하는 과정이고, 권한 부여는 사용자가 어떤 자원에 접근할 수 있는지를 결정하는 과정입니다. 인증(Autentication...
JWT(JSON Web Token) JWT는 토큰 기반의 인증 방식으로, 서버에서 클라이언트에게 JWT를 발급하고, 클라이언트는 이 토큰을 API 요청 시마다 서버에 전달하여 인증을 받는 방식입니다. Spring Boot에서 JWT 설정하기 Spring Boot에서 JWT를 사용해 로그인과 회원가입을 처리하는 API를 구현한 부분입니다. @Rest...
React와 Spring Boot 연동 처음 React와 Spring Boot를 함께 사용하려고 할 때, 가장 먼저 떠오른 것은 “이 둘을 어떻게 연결할까?”였습니다. React는 프론트엔드 라이브러리로서, 주로 사용자 인터페이스를 만들 때 사용되고, Spring Boot는 백엔드 프레임워크로서 서버 측 로직을 처리합니다. 이 두 가지를 연결하는 방법...
React로 프로젝트를 진행하면서, 저는 주로 함수형 컴포넌트를 사용해왔습니다. 처음에는 useState 훅을 사용해 간단하게 상태를 관리할 수 있었지만, 여러 컴포넌트 간에 상태를 공유해야 할 때 복잡함이 증가하면서 어려움을 겪기도 했습니다. 특히, 로그인 기능이 포함된 애플리케이션에서 상태 관리가 점점 복잡해지기 시작했는데, 그 과정에서 여러 문제...
React의 기본 개념 React는 자바스크립트로 작성된 라이브러리로, 사용자 인터페이스를 구축하는 데 사용됩니다. 컴포넌트 기반 아키텍처를 통해 UI를 작은 재사용 가능한 컴포넌트들로 나누어 관리할 수 있어, 복잡한 애플리케이션도 효율적으로 개발할 수 있습니다. 주요 특징: 선언형 : UI의 상태에 따라 자동으로 업데이트가 이루어져...