DB 설계 시 다대다(ManyToMany) 관계를 사용하면 안 되는 이유
WEB study/WEB(Springboot)

DB 설계를 하다 보면 나도 모르게 다대다 관계를 생각해서 ERD를 그리는 경우가 있다.이때마다 다대다 관계는 하면 안 되지!라는 생각을 갖고 다시 중간에 entity를 추가하여 일대다, 다대일 관계로 이루어지도록 수정하는 일이 빈번했다.오늘은 왜 '다대다 관계'를 지양해야 하는지에 대해서 짚고 넘어가 보겠다.다대다 관계란?다대다 관계는 두 엔티티가 서로 여러 개의 데이터를 참조할 수 있는 관계이다. 예를 들어, 학생(Student)과 수업(Course)의 관계를 생각해 보자.한 학생은 여러 수업에 참여할 수 있습니다.한 수업에는 여러 학생이 참여할 수 있습니다.@Entitypublic class Student { @Id @GeneratedValue private Long id; @..

Refresh Token 사용 이유와 Redis를 활용한 관리 방법: Blacklist, TTL, 보안 강화
WEB study/WEB(Springboot)

토큰 기반의 인증 방식토큰 기반 인증(Token-based Authentication)은 사용자 인증 후, 사용자에게 특정한 토큰을 발급하여 이후 요청 시 이 토큰을 통해 인증을 확인하는 방식대표적으로 JWT(JSON Web Token) 같은 형태의 토큰이 많이 사용된다. 사용자가 로그인에 성공하면 서버는 사용자의 권한과 정보를 포함한 JWT를 발급하여 클라이언트에 전달한다.클라이언트는 서버와 통신할 때마다 이 토큰을 포함하여 서버에 요청을 보내며, 서버는 토큰을 확인하고 요청을 처리한다.세션 기반 인증과의 차이세션 기반 인증에서는 서버에 사용자마다 세션 정보를 저장하고, 클라이언트는 세션 ID를 통해 인증을 유지한다. 클라이언트가 많아질수록 서버에 큰 부담을 줄 수 있다.토큰 기반 인증은 서버에서 인증..

웹 쿠키와 세션 개념 및 활용 예시
WEB study/WEB(Springboot)

안녕하세요! 항상 나아가는 개발자 pink_salt 핑솔입니다! 오늘은 웹 쿠키와 세션 개념 및 활용 예시에 대해 알아보겠습니다. 쿠키(cookie)? HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각이다. 브라우저는 그 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재 요청 시 저장된 데이터를 함께 전송한다. 언제 사용하나요? 쿠키는 두 요청이 동일한 브라우저에서 들어왔는지 아닌지를 판단할 때 주로 사용한다. 상태가 없는 HTTP 프로토콜에서 상태 정보를 기억할 수 있어 이를 통해 사용자의 로그인 상태를 유지할 수 있다. 쿠키는 웹 사이트에 접속하면 생성되는 정보를 담은 임시 파일입니다. 쿠키의 데이터 형태는 Key , Value로 구성되어 있고 St..

Spring Boot와 MyBatis의 연동 - Maven 의존성 설정
WEB study/WEB(Springboot)

안녕하세요! 항상 나아가는 개발자 pink_salt 핑솔입니다! 코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다. 이제는 Spring Boot와 MyBatis의 연동에 대해서 공부해보겠습니다. 'Spring Boot 웹 개발 초급'강의를 듣고 공부한 내용을 정리하여 포스팅을 진행하였습니다. Spring Boot에서 MyBatis 설정 1. Maven 의존성 설정 -> MyBatis 및 H2 Database 2. 스프링 애플리케이션 설정 -> application.properties 설정 Maven Java프로젝트에서 사용되는 빌드 자동화 도구 소스코드를 실행 가능한 SW 산출물로 만드는 과정인 빌드를 해주는 도구입니다. Maven의 2가지 주요기능으로는 1. 프로젝트 구성 및 빌드 관리 2. 라..

Spring Boot와 MyBatis의 연동 - Data Access Layer의 개념
WEB study/WEB(Springboot)

안녕하세요! 항상 나아가는 개발자 pink_salt 핑솔입니다! 코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다. 저번 게시물에서는 Spring Bean의 개념과 의존성 주입에 대해서 공부해보았습니다. 이제는 Spring Boot와 MyBatis의 연동에 대해서 공부해보겠습니다. 'Spring Boot 웹 개발 초급'강의를 듣고 공부한 내용을 정리하여 포스팅을 진행하였습니다. Data Access Layer Database에 접근하여 데이터 저장, 조회 등을 수행하는 역할 입니다. Service와 Database 사이의 추상화 된 계층입니다. 추상적이기 때문에 Database 기술이 변경되면 Data Access Layer의 코드는 변경될 수 있지만 Service계층의 코드는 변경되지 않습니다...

Spring Bean 개념과 의존성 주입 - Spring Service 계층, Spring Bean, 의존성 주입
WEB study/WEB(Springboot)

안녕하세요! 항상 나아가는 개발자 pink_salt 핑솔입니다! 코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다. Spring Boot 컨트롤러와 REST API에 대해 공부해보았는데요! 이제는 Spring Bean의 개념과 의존성 주입에 대해서 공부해보려고 합니다. 'Spring Boot 웹 개발 입문'강의를 듣고 공부한 내용을 정리하여 포스팅을 진행하였습니다. 계층형 아키텍처 패턴을 다시 보면은 이렇습니다. 저번에는 Presentation Layer를 봤었는데요. 이번엔 Application Layer의 @Service를 공부해보겠습니다. Spring Service 시스템의 핵심 비즈니스 로직을 구현하는 계층입니다. SNS 시스템의 경우 이미지, 글 등의 콘텐츠 정보를 저장합니다. 사용자가 ..

Spring Boot 웹 개발 입문 - Request 파라미터, Response 데이터, JSON 포맷, HTTP method, request body, REST API 문서 활용
WEB study/WEB(Springboot)

안녕하세요! 항상 나아가는 개발자 pink_salt 핑솔입니다! 코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다. 저번에 HTTP API, REST API를 살펴보았습니다. 그리고 계층형 아키텍처를 이해하고 controller를 구현해보았습니다. 이제 Request 파라미터, Response 데이터, JSON 포맷, HTTP method, request body, REST API 문서 활용에 대해 공부해보도록 하겠습니다. 코드프레소의 'Spring Boot 웹 개발 입문'강의를 듣고 공부한 내용을 정리하여 포스팅을 진행하였습니다. Request 파라미터 만약 은행에서 계좌 거래 내역을 조회한다고 할 때 고객 : 거래내역 조회 부탁드립니다. 직원 : 어떤 계좌인가요? / 언제부터 언제까지의 내역인..

Spring Boot 웹 개발 입문 - Spring Boot 컨트롤러와 REST API (1)
WEB study/WEB(Springboot)

안녕하세요! 항상 나아가는 개발자 pink_salt 핑솔입니다! 코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다. 저번에 Web의 기초 개념과 HTML, CSS를 다지고 왔는데요! 이제 Spring Boot 컨트롤러와 REST API에 대해 공부해보도록 하겠습니다. 'Spring Boot 웹 개발 입문'강의를 듣고 공부한 내용을 정리하여 포스팅을 진행하겠습니다. 계층형 아키텍처의 이해(Layered Architecture) 이 부분은 좀 어려울 수 있는 단원입니다. 웹 개발에 대해서 더 배우면서 또 한 번 짚고 가겠습니다. 계층형 아키텍처를 먼저 말하기 전에 SW 아키텍처를 먼저 알아보겠습니다. SW 아키텍처? SW는 실제 코드 개발 전에 최종 SW가 되어야할 모습을 설계합니다. SW 아키텍처란..

Spring Boot 웹 개발 입문 - Web 의 기초 개념과 HTML의 기초 활용
WEB study/WEB(Springboot)

안녕하세요! 항상 나아가는 개발자 pink_salt 핑솔입니다! 코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다. 저번 게시물에서는 Spring Boot 첫 애플리케이션을 만들어보았습니다. 이제 Web에 대해서 좀 더 자세히 알아보고 공부를 진행해보겠습니다! 'Spring Boot 웹 개발 입문'강의를 듣고 공부한 내용을 정리하여 포스팅을 진행하겠습니다. 웹 Web(World Wide Web) 인터넷 상에서 정보를 공유하는 기술 중 하나입니다. Web에서의 정보는 기본적으로 Hyper Text 문서로 작성되고 공유됩니다. Hyper Text를 작성하는 언어가 HTML입니다. Web Browser는 원격에 있는 Hyper Text 문서를 읽어서 사람이 보기 좋게 만들어 주는 프로그램입니다. Hyp..

Spring Boot 웹 개발 입문 - Spring framework 소개, 실습 환경 설치
WEB study/WEB(Springboot)

안녕하세요! 항상 나아가는 개발자 pink_salt 핑솔입니다! 코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다. 웹 개발에 관심이 많은 사람으로 이제 본격적으로 공부해보려고해요! node.js, react를 이용해서 간단한 웹 프로젝트를 진행해 본 적이 있습니다. 백엔드 파트를 맡아 진행하여 회원가입, 게시물 관련 기능들을 개발하였습니다. 하지만 아직 머리 속에 뒤죽박죽... 이번 기회에 spring boot를 배우면서 머릿 속에 정리를 하고 웹개발 백엔드 쪽에 대해서 열심히 학습해보려고 합니다! 'Spring Boot 웹 개발 입문'강의를 듣고 공부한 내용을 정리하여 포스팅을 진행하겠습니다. 강의 특징 Spring Framework는 러닝 커브가 매우 높습니다. Spring을 깊이 있게 이해..