전체 글 210

[F-Lab 페이백 모각코 59일차] OAuth2 인증 절차

OAuth 2.0 "OAuth 2.0"은 "Open Authorization 2.0"의 줄임말입니다. Open: 이는 프로토콜이 공개적으로 사용할 수 있다는 것을 의미합니다. 즉, 누구나 이 프로토콜을 사용하여 자신의 서비스나 애플리케이션에 적용할 수 있습니다. Authorization: 인증이 아닌 권한 부여를 의미합니다. OAuth는 사용자 대신 클라이언트가 리소스에 접근할 수 있도록 권한을 부여하는 방식으로 작동합니다. 인증(Authentication)은 사용자의 정체성을 확인하는 과정이며, 권한 부여(Authorization)는 특정 작업을 수행할 수 있는 권한을 부여하는 과정입니다. 2.0: 이는 OAuth 프로토콜의 두 번째 주요 버전임을 나타냅니다. 처음에는 OAuth 1.0이 있었으나 여러..

[F-Lab 페이백 모각코 58일차] 스프링 JPA 영속성 컨텍스트란?

스프링 JPA 영속성 컨텍스트란? 스프링 JPA의 영속성 컨텍스트는 엔터티를 영구 저장하는 환경을 의미합니다. JPA는 데이터베이스와의 통신에서 발생하는 많은 작업과 변환 작업을 담당하며, 이러한 작업들은 대부분 영속성 컨텍스트 내에서 처리됩니다. 영속성 컨텍스트의 주요 특징 및 기능은 다음과 같습니다: 1차 캐시: 영속성 컨텍스트는 내부에 1차 캐시를 가지고 있어서, 데이터베이스에서 데이터를 가져올 때 해당 데이터를 캐시에 저장합니다. 동일한 데이터를 다시 조회하려고 할 때는 캐시에서 가져와서 데이터베이스와의 불필요한 통신을 줄입니다. 영속 상태의 엔터티 관리: 영속성 컨텍스트에 저장된 엔터티는 '영속 상태'에 있습니다. 이 상태의 엔터티는 변경 감지(Dirty Checking) 기능을 통해 엔터티의 ..

[F-Lab 페이백 모각코 57일차] 스프링에서 생성자 주입을 권장하는 이유

스프링에서 생성자 주입을 권장하는 이유 스프링 프레임워크에서 생성자 주입을 권장하는 이유에는 여러 가지가 있습니다. 주요한 이유들은 다음과 같습니다: 불변성(Immutability): 필드 주입이나 세터 주입을 사용하면, 객체가 생성된 후에도 해당 필드의 값이 변경될 가능성이 있습니다. 반면, 생성자 주입을 사용하면 모든 필요한 의존성이 객체 생성 시점에 한 번에 주입되므로, 이후에 변경될 위험이 없습니다. 이러한 불변성은 객체의 안정성을 보장하며, 동시성 이슈를 줄이는 데에도 도움이 됩니다. 의존성 명시적 표현: 생성자의 매개변수로 주입되는 의존성들은 해당 클래스가 정상적으로 동작하기 위해 필요한 의존성들임을 명확히 나타냅니다. 세터나 필드 주입의 경우, 어떤 의존성이 필수적이고 어떤 것이 선택적인지 ..

[F-Lab 페이백 모각코 56일차] (SQL) 관리 구문

DML INSERT: 데이터베이스 테이블에 새로운 레코드를 추가하는 명령어입니다. UPDATE: 데이터베이스 테이블에 있는 기존 레코드를 수정하는 명령어입니다. DELETE: 데이터베이스 테이블에서 레코드를 삭제하는 명령어입니다. MER: 데이터베이스 테이블의 두 개 이상의 레코드를 조인하여 새로운 레코드를 만드는 명령어입니다. TCL: 트랜잭션 제어 언어로, 데이터베이스 트랜잭션을 제어하는 명령어입니다. 트랜잭션의 특징 원자성: 트랜잭션 내의 모든 명령어가 반드시 수행되거나, 모두 수행되지 않아야 합니다. 일관성: 트랜잭션이 실행 전과 실행 후의 상태가 항상 일관성 있어야 합니다. 고립성: 트랜잭션 실행 도중에 다른 트랜잭션의 영향을 받지 않아야 합니다. 지속성: 트랜잭션이 실행을 마친 후에도 그 결과..

[F-Lab 페이백 모각코 55일차] (SQL) SQL 활용

서브쿼리 (Subquery) SELECT 절: 메인 쿼리에서 서브쿼리를 이용하여 특정 값을 조회하는 방법입니다. FROM 절: 서브쿼리를 이용하여 메인 쿼리에서 조회할 데이터를 선택하는 방법입니다. WHERE 절, HAVING 절: 서브쿼리를 이용하여 조건을 만족하는 데이터를 조회하는 방법입니다. 스칼라 서브쿼리(Scalar Subquery): 서브쿼리에서 하나의 값을 반환하는 경우를 말합니다. 인라인 뷰 (Inline View): 서브쿼리를 이용하여 새로운 가상 테이블을 생성하여 메인 쿼리에서 사용하는 방법입니다. 중첩 서브쿼리 (Nested Subquery): 서브쿼리 안에 또 다른 서브쿼리를 중첩하여 사용하는 방법입니다. 뷰 (View) 뷰는 하나 이상의 테이블에서 데이터를 가져와 가상의 테이블을 ..

[F-Lab 페이백 모각코 54일차] (SQL) SQL 기본

관계형 데이터베이스 개요 데이터베이스: 데이터를 저장하고 관리하는 시스템입니다. 관계형 데이터베이스: 데이터를 행과 열의 테이블 형태로 저장하는 데이터베이스입니다. Table: 데이터를 저장하는 가장 기본적인 단위입니다. 열과 행으로 이루어져 있습니다. SQL (Structured Query Language): 관계형 데이터베이스에서 데이터를 검색, 수정 및 처리할 때 사용하는 언어입니다. SELECT 문 SELECT: 데이터베이스에서 데이터를 검색할 때 사용하는 명령어입니다. 산술 연산자: SELECT 문에서 덧셈, 뺄셈, 곱셈, 나눗셈 등의 수학 연산을 수행할 때 사용하는 연산자입니다. 합성 연산자: SELECT 문에서 여러 개의 열을 하나로 합치거나, 문자열을 연결할 때 사용하는 연산자입니다. 함수..

[F-Lab 페이백 모각코 53일차] (SQL) 데이터 모델과 SQL

정규화 제 1정규형 제 1정규형은 관계형 데이터베이스에서 중복을 제거하기 위한 정규화 과정 중 첫 번째로, 모든 필드가 원자값(Atomic Value)을 가지도록 분리하는 것을 의미합니다. 제 2정규형 제 2정규형은 데이터베이스에서 관계형 모델이 제 2정규형을 만족하는 상태를 말합니다. 이는 모든 비주요 속성이 주요 속성에 완전 함수적 종속 관계를 가져야 한다는 것을 의미합니다. 제 3정규형 제 3정규형은 데이터베이스에서 중복을 제거하고 모든 테이블이 기본 키를 가져야하는 정규화 과정 중 하나입니다. 주의사항 회원의 배송상태를 조회하려면 여러 번의 JOIN을 해야합니다. 회원 엔터티와 배송 엔터티 간의 관계를 생성하여 성능 개선해야합니다. 정규화를 지나치게 수행하면 성능 저하가 발생할 수 있습니다. 적절..

[F-Lab 페이백 모각코 52일차] (SQL) 데이터 모델링의 이해

데이터 모델의 이해 모델링이란? 데이터베이스의 모델링은 ‘현실 세계를 단순화하여 표현하는 기법’이다 모델링의 특징 추상화 추상화는 복잡하거나 구체적인 것을 단순화하거나 개념화하는 과정을 말합니다. 예를 들어, 예술 작품에서 구체적인 대상을 추상적인 형태로 표현하는 것이 추상화의 예입니다. 단순화 단순화란 복잡한 것을 단순하게 만드는 것을 의미합니다. 명확화 명확화란, 어떤 것을 더욱 분명하게 밝히거나 정확하게 규정하는 것을 의미합니다. 모델링의 세 가지 관점 데이터 관점 "데이터 관점"은 데이터를 다루는 관점을 의미합니다. 데이터를 수집, 분석, 활용하는 등의 과정에서 중요한 역할을 합니다. 프로세스 관점 프로세스 관점은 시스템이나 소프트웨어를 구성하는 작업들을 단계적으로 파악하고 이해하는 것을 의미합니..

[F-Lab 페이백 모각코 51일차] SpringBoot 3 (3.1.2) + SpringDoc ( OAS3)

Swagger를 추가할려고 하니 왠지 잘 안되었다. Swagger 3를 스프링 부트3 에 적용하려다가 실패했다. @Configuration을 선언하고 해당 클래스에 자바설정코드도 코딩해 놓았는데 빌드할때 클래스로드가 되지 않았다. 기존 코드는 게시판을 구현한 것이였는데 그중 코드를 RestAPI로 간단히 바꾸어놓았다. API 클래스에 @RestController 선언해 놓고 기존 컨트롤러 클래스의 자바코드를 약간 RestAPI용으로 약간씩 바꾸어 놓았다. 자바언어로 된 Swagger 설정 파일과 위 변경 사항 그리고 해당 의존성 추가 한 것 외에는 다른 변경상황은 기억나지 않았기 떄문에 1 test completed, 1 failed Caused by: java.lang.ClassNotFoundExcep..

[F-Lab 페이백 모각코 50일차] 프로그래머스 콜라 문제 (Java)

학습목표 콜라 문제 - 프로그래머스 - 자바 TIL 콜라 문제 - 프로그래머스 - 자바 문제 설명 오래전 유행했던 콜라 문제가 있습니다. 콜라 문제의 지문은 다음과 같습니다. 정답은 아무에게도 말하지 마세요. 콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가? 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다. 문제를 풀던 상빈이는 콜라 문제의 완벽한 해답을 찾았습니다. 상빈이가 푼 방법은 아래 그림과 같습니다. 우선 콜라 빈 병 20병을 가져가서 10병을 받습니다. 받은 10병을 모두 마신 뒤, 가져가서 5병을 받습니다. 5병 중 4병을 모두 마신 뒤 가져가서 2병을 받고, 또 2병을 모두 마신 뒤 가져가서 1병을 받습니다. ..