Java객체와 관계형 DB 사이를 매핑하는 ORM 기술 표준 ORM(Object Relational Mapping)객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다.JPA 장점 1\. 특정 데이터베이스 종속되지 않음 2\. SQL문이 아
Spring Data JPA에서 제공하는 핵심 기능 중 하나로 Repository 인터페이스에 간단한 네이밍 룰에 따라 메소드를 작성하면 원하는 쿼리를 실행하도록 지원하는 메소드find 문법find + (엔티티 이름) + By + 변수이름
SQL과 유사한 JPQL (Java PErsistence Query Language) 라는 객체지향 쿼리 언어를 통해 복잡한 쿼리 처리를 지원JPQL : 테이블이 아닌 엔티티 객체를 대상으로 검색하는 객체지향 쿼리, SQL 추상화로 인해 특정 db sql에 의존하지 않
Entity 연관 관계 매핑 --- 연관 관계 매핑 종류 일대일(1:1) - @OnetoOne 다대일(N:1) - @ManytoOne 일대다(1:N) - @OneToMany 다대다(N:M) - @ManyToMany 연관 관계 매핑 방향 데이터베이스

"CASCADE : 폭포, 폭포처럼 흐르다" 라는 사전적 의미를 바탕으로 엔티티의 상태를 변경할 때 해당 엔티티와 연관된 엔티티의 상태 변화를 전파시키는 옵션부모는 One에 해당하는 Entity자식은 Many에 해당하는 Entity부모 Entity가 존재해야 자식 En
엔티티에 공통으로 들어가는 멤버변수들 (등록시간, 수정시간, 등록자, 수정자 등등)을 추상클 래스로 만들고, 해당 추상 클래스를 상속 받아 엔티티에 공통적인 기능을 수행하도록 하며 "엔티티의 생성과 수정을 감시"하는 기법여러 엔티티에 공통된 멤버변수가
정의 : 메모리 기반의 키-값 데이터 저장소로, 주로 캐싱과 빠른 데이터 검색에 사용됩니다. 데이터는 메모리에 저장되기 때문에 매우 빠른 응답 속도를 자랑합니다.장점 : Read/Write 속도Hardware 차이에서 오는 기본적인 performance gap다양한
정의 : 분산 메시지 스트리밍 플랫폼으로, 주로 실시간 데이터 스트리밍을 처리 하는 데 사용됩니다. 대용량의 데이터를 빠르게 처리하고, 여러 시스템 간에 데이터를 전달할 수 있는 강력한 툴장점 : 고가용성, 빠른 처리단점 : 순서보장이 어렵다. 아주 작게 사용이 어렵다
차이점 | | Redis | Kafka | | ------ | ---------------------------- | ------------------------------ | | 목적 | 빠른 데이터 접근과 캐싱 | 대용량 ...
어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조로, 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다.ex) ∙ Java의 Spring ∙ Python의 Django ∙ JS의 Node.js코드의 재사용 가능성 ∘ 공통적으로
자바 플랫폼용 오픈소스 애플리케이션 프레임워크로, 엔터프라이즈 애플리케이션 개발을 단순화하고 생산성을 높이는 데 초점을 둡니다. POJO(Plain Old Java Object) 기반 개발 ∘ Spring은 평범한 자바 객체를 사용하여 복잡성을 줄이고 코드의 재사용성
객체 간의 의존 관계를 개발자가 아닌 스프링 컨테이너(IOC 컨테이너) 가 관리하고 주입해주는 설계 패턴스프링의 핵심 개념인 제어의 역전(Inversion of Control, Ioc) 의 구현 방식 중 하나테스트가 용이해진다.코드 재사용율이 높아진다.객체 간의 의존성
IoC(Inversion of Control, 제어의 역전)는 객체의 생성, 관리, 의존 관계 설정을 개발자가 직접 수행하는 대신, 프레임워크(스프링 컨테이너)가 대신 수행하도록 제어권을 넘기는 설계 원칙입니다.IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리해
내용이 바뀌지 않는 페이지(항상 동일한 내용)Web Server는 파일 경로 이름을 받아 경로와 일치하는 file contents를 반환한다.항상 동일한 페이지를 반환한다.파라미터에 따라 내용이 변경되는 페이지파라미터의 내용에 맞게 동적인 contents를 반환한다.W
Java 언어로 작성된 웹 애플리케이션에서 HTTP 요청을 처리하고 HTTP 응답을 생성하는 서버 측 컴포넌트동적 컨텐츠 제공∘ 정적인 HTML 파일과 달리 사용자 요청에 따라 동적인 데이터를 생성하고 반환합니다.요청 및 응답 처리∘ 클라이언트(주로 브라우저)로부터 H
AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 소프트웨어 모듈 간의 공통적인 기능을 분리하여 코드의 유지보수성과 재사용성을 높이는 프로그래밍 기법Aspect∘ 공통적으로 적용되는 관심사를 모듈화한 단위∘ ex) 로깅, 트랜잭션 관리
Spring Framework에서 빈(bean) 등록, 의존성 주, 요청 처리, 트랜잭션 관리 등 다양한 작업을 선언적으로 처리할 수 있도록 지원하는 어노테이션컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공∘ 오버라이딩을 하기 위해서는 부모 클래스에 있는 메
클래스가 오직 하나의 인스턴스만을 생성하도록 보장하고, 그 인스턴스에 대한 전역 접근을 제공하는 디자인 패턴싱글톤 클래스라고 하면 해당 클래스의 인스턴스르 하나만 만들 수 있다.구현 방법 ∘ 외부 클래스로부터 인스턴스화 되는 것을 막기 위해 생성자는 private으로
Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 부른다.자바 프로그래밍에서는 Class를 생성하고 new를 입력하여 원하는 객체를 직접 생성 후 사용했다.하지만 Spring에서는 직접 new를 이용하여 생성한 객체가 아니라, Spring에 의하여
유저가 누구인지 확인하는 절차, 회원가입하고 로그인 하는 것.ex) 웹사이트 로그인(ID/PW, OTP, 지문, 인증 앱)유저에 대한 권한을 허락하는 것.
header, payload, signature로 구성되어 있으며 header는 signature를 해싱하기 위한 알고리즘 정보가 담겨있고 payload는 실제로 사용될 데이터들이 담겨 있습니다.signature는 토큰의 유효성 검증을 위한 문자열로 이 문자열을 통해
관계형 데이터베이스, 데이터를 테이블 형태로 저장하고 관리합니다.SQL을 사용하며 데이터를 정의하고 조작합니다.스키마 기반∘ 데이터를 저장하기 전에 미리 테이블 구조(스키마)를 정의해야 합니다.정규화∘ 중복 데이터를 줄이고 데이터 무결성을 유지합니다.ACID 지원∘ 트
소프트웨어 개발 방법론 중 하나로, 테스트를 먼저 작성한 후 코드 구현을 진행하는 방식을 의미합니다.Red(실패하는 테스트 작성)구현할 기능에 대한 테스트 코드를 작성합니다.이때, 아직 기능이 구현되지 않았기 때문에 테스트는 실패(Red)하게 됩니다.Green(테스트
좋은 코드는 가독성, 유지보수성, 효율성, 확장성을 갖춘 코드를 의미한다.1\. 가독성 : 코드의 목적과 동작이 명확히 이해되며 읽기 쉬워야 합니다.2\. 유지보수성 : 오류 수정과 기능 추가가 간단해야 합니다.3\. 효율성 : 성능과 리소스 사용이 최적화되어야 합니다
Array > 가장 기본적인 데이터 구조, 배열은 인덱스와 인덱스에 해당하는 데이터들로 이루어져 있으며, 생성 시 설정된 셀의 수가 고정된다. 구조 : 고정 크기의 연속된 메모리 공간 접근 : 인덱스를 통해 직접 접근 가능(시간 복잡도 O(1)) 삽입/삭제 : 요소를
조회 시 1개의 쿼리를 생각하고 설계 했으니 나오지 않아도 되는 조회의 쿼리가 N개가 더 발생하는 문제N + 1 문제는 데이터베이스에서 주로 다대일관계나 일대다 관계를 맺고 있는 엔티티를 조회할 때 발생예를 들어, 게시글과 댓글 관계가 있을 때, 게시글을 조회하고 각
SYN(Synchronize)클라이언트가 서버에 연결 요청(SYN 패킷) 송신SYN-ACK(Synchronize Acknowledgment)서버가 클라이언트 요청을 수락하고, 응답(SYN-ACK 패킷) 송신ACK(Acknowledgment)클라이언트가 서버의 응답을 확
클라이언트와 서버 간의 양방향 통신을 가능하게 하는 프로토콜로, HTTP를 기반으로 연결을 초기화한 후, TCP 소켓 연결을 통해 지속적으로 데이터를 주고받을 수 있는 기술양방향 통신클라이언트와 서버가 실시간으로 데이터를 주고받을 수 있음연결 유지한 번 연결이 이루어지
STOMP(Simple Text Oriented Messaging Protocol) > pub/sub 기반으로 동작하기 때문에 메시지의 송신, 수신에 대한 처리를 명확하게 정의 할 수 있다. Sub/Pub? > - 채팅방 생성 : pub/sub 구현을 위한 Topi
프로세스 독립된 메모리 공간과 자원을 가진 프로그램의 실행 단위각 프로세스는 별도의 주소 공간을 사용프로세스 간 통신은 IPC(Inter-Process Communication)을 사용해야 함스레드프로세스 내에서 실행되는 작은 실행 단위같은 프로세스 내의 스레드들은 자
데이터 관리 효율성 : 데이터를 체계적으로 저장하고 관리.데이터 중복 최소화 : 데이터 일관성을 유지하며 저장공간 절약.보안성 : 접근 권한을 통해 데이터 보호데이터 통합 : 여러 애플리케이션에서 일관된 데이터 제공확장성과 성능 : 대용량 데이터 처리 및 분석에 적합Q
자원(Resource)REST에서 모든 것은 "자원"으로 표현됩니다.자원은 URI(Uniform Resource Identifier)를 통해 식별ex)https://api.example.com/users(사용자 자원)https://api.example
VS @Controller@Controller는 웹 애플리케이션에서 뷰(View)를 반환하는데 주로 사용@RestController는 JSON, XML과 같은 데이터를 반환하며, 뷰를 렌더링하지 않습니다.@RestController는 @Controller와 @Respo
객체 생성 과정에서의 복잡성을 줄이고, 객체 생성 메커니즘을 유연하게 만드는 데 초점이 맞춰져 있습니다.주요 패턴Singleton∘ 특정 클래스의 인스턴스가 오직 하나만 존재하도록 보장합니다.∘ 사용 사례 : DB 연결, 설정 관리, 로깅Factory Method∘ 객
오픈 소스 기반의 운영체제 입니다. 리눅스는 전 세계적으로 가장 널리 사용되는 운영체제 중 하나로, 서버, 데스크톱, 모바일 기기, IoT 기기 등 다양한 환경에서 활용됩니다.1) 오픈 소스리눅스는 무료로 배포되며, 누구나 소스 코드를 열람, 수정, 배포할 수 있습니다
고성능의 HTTP 및 역방향 프록시 서버, 메일 프록시 서버, 일반 TCP/UDP 로드 밸런서로 사용되는 오픈 소스 소프트웨어1) HTTP 웹 서버정적 콘텐츠 제공에 최적화 되어 있습니다.동적 콘텐츠는 외부 애플리케이션 서버와의 연동을 통해 처리2) 역방향 프록시(Re
역할 : 웹 브라우저와 웹 서버 간에 데이터를 전송하는 프로토콜특징∘ 클라이언트-서버 모델∘ 상태 비저장(stateless) : 각 요청은 독립적으로 처리되며, 서버는 요청 간의 상태를 유지하지 않음.주요 메서드∘ GET : 데이터 요청∘ POST : 데이터 전송∘ P
Spring Boot나 Hibernate를 사용하여 양방향 연관 관계를 정의했을 때 직렬화 과정에서 문제가 발생할 수 있습니다.순환 참조는 객체 A가 객체 B를 참조하고, 객체 B가 다시 객체 A를 참조하는 상황을 의미합니다.Jackson 라이브러리가 제공하는 @Jso
NoSQL 데이터베이스의 대표적인 예로, 전통적인 관계형 데이터베이스와는 다른 방식으로 데이터를 저장하고 관리합니다.JSON과 유사한 문서(Document) 형태로 데이터를 저장하며, 높은 확장성과 유연성을 제공합니다.문서 지향(Document-Oriented) ∘ 데
MongoDB에 데이터를 저장할 때 시간이 GMT로 저장되는 것은 정상적은 동작이다.내부적으로 UTC를 사용하여 날짜와 시간을 저장하는데 이를 조회하거나 표시할 때 로컬 시간대로 변환할 수 있습니다.MongoDB는 Data 타입 데이터를 UTC로 저장한다. Spring
웹소켓에서 메시지를 처리할 때 메시지의 목적을 구분하지 않았기 때문에 모든 메시지가 전송 로직으로만 처리되었습니다.messageType으로 메시지 타입 구분메시지 타입 기반 설계 : 메시지의 목적에 따라 타입을 구분함으로써 코드의 명확성과 가독성을 크게 향상 시킬 수
단일 터미널 세션 내에서 여러 터미널 창을 실행하고 관리할 수 있도록 해주는 도구여러 세션 관리하나의 tmux 세션에서 여러 창을 열고 각 창을 독립적으로 실행할 수 있음각 창은 여러 개의 패널로 분할 가능세션을 종료하지 않고 나중에 재접속 가능세션 유지 및 복구SSH
선형 탐색 알고리즘(Linear Search Algorith) > 맨 앞 부터 순서대로 요소를 검색하는 알고리즘 > 1. 맨 끝부터 하나하나 원하는 값을 찾아본다. > 2. 원하는 값을 찾으면 탐색을 종료한다.
데이터를 일시적으로 쌓아 놓는 자료구조로, 데이터의 입력과 출력 순서는 후입선출(LIFO: Last In First Out) 방식가장 나중에 넣은 데이터를 가장 먼저 꺼냅니다. 스택에 데이터를 넣는 작업을 푸시(push)데이터를 꺼내는 작업을 팝(pop)
큰 문제를 작은 문제로 나누어 해결하고, 이를 저장하여 중복 계산을 방지하는 알고리즘 기법일반적으로 최적 부분 구조, 중복 부분 문제를 만족하는 문제에서 사용최적 부분 구조 : 문제의 최적 해가 부분 문제들의 최적 해로 구성될 수 있음중복 부분 문제 : 동일한 작은 문
어떤 사건이 자기 자신을 포함하고 있거나 또는 자기 자신을 사용하여 정의하고 있을 때 이를 재귀적(recursive)이라고 합니다1은 자연수입니다.자연수 n의 바로 다음 정수도 자연수입니다.0 != 1n > 0이면 n! = n X (n-1)!매개변수 n에 전달받은 값이
ORM(Object-Relational Mapping)에서 발생하는 성능 이슈 중 하나로, 특정 엔티티를 조회 할 때 연관된 엔티티들을 추가로 조회하면서 불필요한 쿼리가 다시 실행되는 문제 하나의 Review엔티티를 가져올 때 관련된 Participants 엔티티가 존