- 트리거: 테이블에서 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 실행되는 작업.
- 트랜잭션 : 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 말한다.
원자성(Atomicity)
트랜잭션이 데이터베이스에 모두 반영되던가 전혀 반영이 되지 않아야한다.
일관성(Consistency)
트랜잭션 처리 결과가 항상 일관성 있어야한다.
독립성(Isolation)
둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 다른 트랜잭션의 연산에 끼어들 수 없다.
지속성(Durability)
트랜잭션이 성공적으로 완료됐을 경우, 결과는 영구적으로 반영이 되어야 한다.
- SQL문 실행 순서 예제
① FROM
② WHERE
③ GROUP BY
④ HAVING
⑤ SELECT
⑥ ORDER BY
- DDL : 구조 정의 에 사용하는 언어, 테이블이나 컬럼 등을 생성, 수정, 삭제
CREATE, ALTER, DROP, TRUNCATE, RENAME
- DML: 데이터 조작에 사용, 조회, 저장, 수정, 삭제
SELECT, INSERT, UPDATE, DELETE
- DCL: 접근 권한 제어
GRANT, REVOKE
- TCL: 트랜잭션을 컨트롤
COMMIT, ROLLBACK, SAVEPOINT
- FULL SCAN : 모든 데이터를 읽어가면서 스캔하는 것
- 옵티마이저: 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는엔진이다.
OOP 객체 지향 프로그래밍 : 프로그램을 객체 단위로 나눠 작업하는 방식이며, 객체들의 상호작용을 통해 프로그램을 설계하고 개발하는것
장점 : 코드 재사용 용이, 생산성 향상, 유지보수 편의성
SOLID: SRP(단일 책임 원칙), OCP(개방폐쇄원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존 역전 원칙)
추상화: 공통적인 속성과 기능을 정의함으로써 코드의 중복을 줄이고, 클래스 간 관계를 효과적으로 설정하고, 유지/보수를 용이하게 하는 것이다.(인터페이스, abstract)
리팩토링 : 결과의 변경없이 코드의 구조를 재조정함, 가독성을 높이고 유지보수를 편하게 할 수 있다.
컬렉션: 많은 데이터 요소를 효율적으로 관리하기 위한 자료구조를 말하며, List, Set, Map 등이 여기에 포함됩니다
제네릭: 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법으로 보통 자바에서 <> 꺽쇠 괄호로 되어있다.
Stream : 람다식을 이용한 기술 중에 하나로 데이터 소스를 조작 및 가공, 변환하여 원하는 값으로 반환해주는 인터페이스를 의미합니다.
특징은 내부 반복을 통해 작업을 수행하며, 일회용이며, 데이터 소스를 변경하지 않습니다.
GC : Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 자동 제거하는 프로세스
Static전역변수와 static멤버 변수를 저장, 시작할 때부터 끝날 때까지 메모리에 저장
Stack의 경우에는 정적으로 할당된 메모리 영역
Heap의 경우에는 동적으로 할당된 메모리 영역
int 기본형 null로 초기화 불가
Integer 래퍼클래스(기본형을 객체로 다루기 위해), null값 처리 가능JVM
Java Virtual Machine의 약자로 자바 프로그램을 OS 환경과 상관없이 구동될 수 있도록 해주는 가상 머신입니다.
GC를 통해 메모리를 효율적으로 관리
JAVA컴파일과정
1.개발자가 .java파일 생성
2. 컴파일러가 자바 소스파일을 컴파일
3. 컴파일된 바이트 코드를 JVM의 클래스 로더에 전달
4. 클래스 로더는 동적로딩을 통해 필요한 클래스들을 로딩 및 링크하여 JVM메모리에 올린다.
5.실행엔진(Execution Engine)은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행
MVC : 소프트웨어 개발에서 사용되는 디자인 패턴으로 Model, View, Controller로 분리한 패턴이다. 각 부분을 분리함으로써 유지보수성, 확장성, 코드 재사용성을 향상시킨다.
SpringMVC구조: 클라이언트 HTTP요청, DispatcherServlet이 핸들러 매핑을 통해 핸들러를 조회하고 핸들러는 처리할 수 잇는 핸들러 어댑터를 조회하여 핸들러 어댑터를 호출 후 핸들러 호출 후 ModelAndView 반환 후 viewResolver를 통해 View를 렌더링한 후 클라이언트에게 HTML을 응답한다.
AOP: 관점 지향 프로그래밍으로 관점을 기준으로 다양한 기능을 분리하여 보는 프로그래밍이며 횡단 관심사라고도 불림
Bean :
스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트이다.
즉, 스프링 컨테이너가 관리하는 자바 객체를 뜻하며, 하나 이상의 빈(Bean)을 관리한다.
IoC: 제어의 역전이라고 불리며, 스프링은 개발자가 직접 객체를 생성하지 않고 객체의 생명 주기 관리를 스프링컨테이너에게 위임한다.
DI: 사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식을 말한다.
필드주입, 수정자주입, 생성자주입이 있는데 생성자 주입이 순환참조에러를 방지할 수 있다.
JWT는 웹에서 사용자 인증/인가에 사용하는 토큰으로 Json Web Token의 줄임말이다.
장점1.인증을 위한 별도의 저장소가 필요 없다. 2. 빠른 인증 처리 3. 확장성 우수
단점 토큰이 탈취당할 시 만료될 때까지 대처가 불가능하다, Payload부분은 누구든 디코딩하여 확인할 수 있다.
평소에 API 통신할 때는 Access Token을 사용하고, Refresh Token은 Access Token이 만료되어 갱신될 때만 사용한다.
MSA : 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크라고 할 수 있다
ENUM : 열거형(enum)은 요소, 멤버라 불리는 명명된 값의 집합을 이루는 자료형이다. 상수 데이터들의 집합
reflection : 구체적인 클래스 타입을 알지 못하더라도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API입니다.
REST API란? REST API 명령어(CRUD) 아시는것 설명해주세요.
HTTP URI를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
세션과 쿠키의 차이는?
- 세션 : 저장위치 서버, 보안이 강함, 속도 느림
- 쿠키 : 저장위치 클라이언트 로컬, 보안 취약, 속도 빠름