✅ Spring_

📚 Spring 정리 2탄 : 자바 및 백엔드 핵심 개념 정리

CodeLoge 2025. 6. 9. 19:25

✅ Join

 

데이터 중복 저장을 피하기 위해 여러 테이블에 나누어 저장 (정규화)
• 테이블 간의 관계(Relationship)를 통해 원하는 데이터를 도출
• 관련 컬럼을 기준으로 여러 테이블의 행을 결합


✅ 정규화

 

• 데이터 중복 제거, 저장 공간 절약
• 테이블 분할 → 관계형 구조 생성


✅ Index (DB)

 

• 테이블 검색 속도 향상을 위한 자료구조
• 성능을 높이지만, 추가적인 쓰기 작업과 저장 공간 필요


✅ SW 디자인 패턴 (GoF 디자인 패턴)

 

• 효율적인 설계와 유지보수를 위한 구조적 개발 방법론
• 대표 패턴 : MVC, Singleton, Template, Factory 등


✅ MVC 패턴

 

관심사 분리로 코드 구조 명확화
• UI, 로직 분리 → 독립적 유지보수 가능
• 생산성과 유지보수성 향상


✅ Singleton 패턴

 

• 하나의 클래스 인스턴스를 한 번만 생성
• 이후에는 기존 인스턴스를 재사용


✅ Template 패턴

 

• 알고리즘의 뼈대를 정의하고 세부 단계만 재정의
• 공통된 처리 흐름 유지, 중복 코드 제거
• Ex) JDBCTemplate, MyBatis


✅ Factory 패턴

 

• 객체 생성 책임을 서브클래스로 위임
• 객체 생성을 캡슐화하여 유연성 확보


✅ 메모리 영역

 

• Stack, Heap, Data 세 가지로 구분
• 용도별로 변수와 객체가 배치됨


✅ 데이터 영역

 

• 전역 변수, static 변수 저장
• 프로그램 시작 시 할당, 종료 시 소멸


✅ 스택 영역

 

• 지역 변수, 매개변수 저장
• 함수 호출 시 할당, 종료 시 소멸
• 컴파일 타임에 크기 결정


✅ 힙 영역

 

• 런타임 중 동적으로 메모리 할당
• 객체 저장 영역, GC에 의해 관리됨


✅ Transaction

 

더 이상 나눌 수 없는 최소 작업 단위
• 성공 시 commit, 실패 시 rollback
• Ex) 카카오페이 결제 → 포인트 차감, 결제 승인 등 일괄 처리 보장


✅ JDBC (Java Database Connectivity)

 

• Java와 DB를 연결하는 표준 API
• SQL 실행 및 결과 처리 기능 제공
• 드라이버를 통해 DBMS와 연결


✅ Servlet vs JSP

 

• Servlet : Java 코드 안에 HTML
• JSP : HTML 안에 Java 코드
• JSP는 Servlet으로 변환되어 실행됨


✅ Server vs Client

 

• Server : 요청을 처리하고 응답을 반환하는 시스템

• Client : 사용자 측, 웹 브라우저
• 클라이언트가 요청(request) → 서버가 응답(response)


✅ Framework vs Library

 

Framework : 개발의 골격, 흐름을 자체가 제어 (IoC) → Ex) Spring
• Library : 필요 시 호출하는 유틸성 코드 모음 → Ex) jQuery


✅ 에러 vs 예외

 

• 에러 : 시스템 오류, 복구 불가 → StackOverflowError
• 예외 : 코드로 처리 가능한 상황 → NPE, IndexOutOfBounds


✅ 생성자

 

• 클래스와 동일한 이름의 메서드
• 객체 생성 시 호출됨 (new 키워드 사용)
• 디폴트 생성자 존재, 오버로딩 가능


✅ CORS (Cross-Origin Resource Sharing)

 

• 다른 출처의 자원에 접근할 수 있게 해주는 브라우저 보안 정책
• 서버에서 허용해야 다른 출처에서 접근 가능


✅ Spring vs Spring Boot

 

• Spring Boot : Spring 설정 자동화
• 내장 톰캣 포함, 실행 간편화
• 프로덕션 수준의 환경 빠르게 구축 가능


✅ Session vs Cookie

 

• Session : 서버 저장, 브라우저 종료 시 삭제, 보안에 유리

• Cookie : 클라이언트(브라우저) 저장, 유효기간 설정 가능
• 로그인, 장바구니 등 상태 정보 저장에 사용


✅ 스레드 (Thread)

 

• 프로세스 내에서 실행되는 단위
• 하나의 프로세스는 여러 스레드 가짐 가능


✅ 멀티 스레드 (Multi-Thread)

 

• 하나의 프로그램에서 동시에 여러 작업 수행
• 자원 공유로 성능 효율적, 응답성 향상
• 동기화 필요, 과도한 Lock은 병목 발생


✅ NoSQL

 

• 비관계형/분산형 DB
• 스키마 없음, Join 불가
• 대용량/비정형 데이터 처리에 적합
• 클러스터 기반 확장성 우수

클리스터링 : 사전에 정의된 레이블 없이 데이터를 분석하여, 내부 구조나 패턴을 기반으로 그룹을 형성하는 것


✅ Node.js

 

• JS 기반의 서버 사이드 플랫폼
• 자체 HTTP 서버 보유
• 이벤트 기반, 논블로킹 I/O


✅ Bean (Spring)

 

Spring 컨테이너가 생성 및 관리하는 객체
• 설정에 따라 자동 생성되어 재사용 가능
• 예: LoginController, BoardServiceImpl 등


✅ Garbage Collector (GC)

 

• 불필요한 객체를 JVM이 자동으로 제거
메모리 누수 방지
• 개발자는 직접 메모리 해제하지 않음