분류 전체보기 89

Spring Interceptor

✅ Request가 들어올 때 거치는 순서 Filter: 요청이 DispatcherServlet에 도달하기 전에 실행Interceptor: DispatcherServlet이 실행된 후 컨트롤러(핸들러)가 실행되기 전/후에 실행AOP: 메서드 호출 전/후에 적용  ✅ Filter와의 차이Filter는 스프링 내부 기능과 관계없이 Web Container 단계에서 작동하므로 컨트롤러로부터 독립적Interceptor는 Spring Container 단계에서 작동하므로 스프링과 연계되어 실행됨  ✅ Interceptor를 쓰는 이유공통 코드 사용으로 코드의 재사용성 증가메모리 낭비, 서버 부하 감소코드 누락에 대한 위험성 감소        예를 들어,       모든 요청에 대해 JWT 검증을 해야하는 경우  ..

+/Spring 2024.05.17

STS4에서 STS3 플러그인 설치 오류 (Spring Legacy Project 생성)

Spring Legacy Project 생성은 STS4 버전에서는 불가능하기 때문에 STS3 버전을 사용하거나 직접 플러그인을 설치해서 사용해야 한다. 현재 STS4 버전을 사용중이라File > New > Other 경로로 들어가면 Spring Legacy Project 생성 탭이 뜨지 않는 것을 볼 수 있다.        💡 설치 방법Help > Eclipse Marketplace > Spring Tool 3 Add-On for Spring Tools 설치         💡 설치 오류 - eclipse 버전 관련(mylyn) ▶ 오류 로그더보기An error occurred while collecting items to be installedsession context was:(profile=Def..

+/Spring 2024.05.16

Spring Lombok @Data @Getter @Setter 인식 인식 오류 해결

pom.xml 파일에 lombok dependency를 추가해줬음에도 불구하고 인식이 되지 않아 필요한 dto에서 getter를 사용하지 못하는 오류가 있었다.  의존성 추가가 잘 됐나 보니 lombok만 jar 파일이 생성되지 않았다.따라서 수동으로 추가하여 설정해주어야 한다.   1. Lombok jar파일 설치설치할 때 필요한 버전에 맞게 설치해야 한다. older versions projectlombok.org      2. Lombok Installer 실행cmd 창을 열어 위에서 설치한 lombok.jar 파일 경로로 가서 java -jar .\lombok.jar 와 같이 명령어를 입력하여 installer를 실행한다.      3. STS에 lombok.jar 파일 설치Installer 실행..

+/Spring 2024.05.13

쿼리 최적화 및 성능 향상 기법 - 인덱스(데이터 스캔 방식)

쿼리 최적화 및 성능 향상 기법 - 인덱스의 개념과 종류인덱싱이란? 목차와 같은 개념으로 데이터 조회 시 인덱스 범위 내에서 데이터를 먼저 찾음으로써 데이터를 빠르게 조회할 수 있도록 한다.   인덱스 생성 및 삭제 방법(MS-SQL 기준)/* 인덱스 생writtenbyrla.tistory.com 지난 글에서 인덱스의 개념과 종류에 대해서 알아보았다.오늘은 데이터 스캔 방식에 대해 알아보고자 한다.     1. Table Scan인덱스가 없이 데이터가 무작위로 저장되어 있는 상태에서 테이블 전체를 읽어서 조회하는 방식   2. Clustered Index Scan 클러스터형 인덱스의 키로 지정된 열을 탐색의 조건으로 사용할 수 없는 경우에 모든 행을 읽어내면서 조회하는 방식인덱스 키가 Birth일 때, ..

+/Database 2024.05.08

쿼리 최적화 및 성능 향상 기법 - 인덱스의 개념과 종류

인덱싱이란? 목차와 같은 개념으로 데이터 조회 시 인덱스 범위 내에서 데이터를 먼저 찾음으로써 데이터를 빠르게 조회할 수 있도록 한다.   인덱스 생성 및 삭제 방법(MS-SQL 기준)/* 인덱스 생성 */CREATE INDEX emp_idx ON dbo.emp (hiredate)/* 인덱스 삭제 */DROP INDEX emp_idx ON dbo.emp   인덱스 종류1. Clustered Index(클러스터 인덱스) 인덱스를 통해 해당 페이지로 바로 이동인덱스 컬럼을 기준으로 데이터가 물리적으로 정렬검색 속도가 빠름기본키(Primary Key)를 생성하면 자동으로 클러스터 인덱스를 생성하며 테이블 당 한 개만 생성할 수 있음         → 테이블 생성 시 PK를 생성하면 클러스터형 인덱스가 자동으로..

+/Database 2024.05.02

[MS-SQL] 쿼리 성능 측정 방법

[성능 측정]SET STATISTICS TIME ONSET STATISTICS IO ON // 수행할 쿼리문SET STATISTICS IO OFFSET STATISTICS TIME OFF 1. SET STATISTICS TIME ON - 시간 측정 옵션2. SET STATISTICS IO ON - 통계 정보 표시  출력 항목의미테이블테이블 명검색 수실행된 검색 수논리적 읽기 수데이터 캐시에서 읽은 페이지 수물리적 읽기 수디스크에서 읽은 페이지 수미리 읽기 수쿼리에 대해 캐시에 넣어진 페이지 수LOB 논리적 읽기 수데이터 캐시에서 읽은 페이지 수LOB 물리적 읽기 수디스크에서 읽은 페이지 수LOB 미리 읽기 수쿼리에 대해 캐시에 넣어진 페이지 수   [출력 결과]// 통계 정보Table 'tblTest'...

+/Database 2024.04.29

예외 처리

✅ 발생 시점에 따른 에러 종류1. 컴파일 에러컴파일 시점에 발생하는 에러로 소스 코드의 오타나 자료형, 잘못된 구문 등을 검사하여 문제가 있을 경우 에러를 발생 시킴ex) int a = 5.5; import java.util.*.ArrayList; 2. 런타임 에러컴파일 후 실행 시에 발생하는 예측 불가능한 에러Error와 Exception으로 나뉨 3. 논리적 에러: 실행은 되지만 의도와 다르게 동작하는 에러      ✅ 예외 클래스의 계층 구도1. 에러(error): 프로그램 코드에 의해서 수습될 수 없는 오류메모리 부족(OutOfMemoryError) 또는 스택오버플로우(StackOverflowError) 2. 예외(Exception): 프로그램 코드에 의해서 수습될 수 있는 오류    1) Ch..

+/Java 2024.04.17

[TIL] CS공부 15일차

CORS(Cross Origin Resource Sharing)에 대해 설명해주세요. 웹 브라우저의 스크립트로부터 출처가 다른 리소스에 접근할 수 있도록 하는 보안정책으로, 기본적으로는 브라우저가 스크립트에서 다른 출처에 대한 HTTP 요청을 차단하지만 CORS를 통해 웹 애플리케이션은 다른 출처의 리소스에 대한 요청을 보낼 수 있게 합니다. 웹 브라우저의 스크립트에서 AJAX 요청이나 웹 폰트, 이미지, 비디오 등과 같은 외부 리소스에 접근할 때 CORS가 필요합니다. 브라우저의 작동 방식에 대해서 설명해주세요. 요청 사용자가 URL을 입력, 링크 클릭, 검색어 입력 등을 통해 웹 페이지 요청을 합니다. URL 해석 및 요청 전송 브라우저는 입력된 URL을 해석하여 해당하는 서버의 주소를 찾은 후 해당..

++/CS 2024.03.28

[TIL] CS공부 14일차

Spring @ControllerAdvice 어노테이션의 동작 원리에 대해 자세히 설명해주세요. @ControllerAdvice 어노테이션은 컨트롤러에 대한 예외 처리를 하는 클래스를 정의할 때 사용됩니다. @ControllerAdvice 어노테이션이 명시된 클래스는 스프링 컨텍스트에 등록되고, 로직 처리 중 예외가 발생하면 @ExceptionHandler가 명시된 메서드가 호출되어 예외처리와 관련된 로직을 수행합니다. Checked Exception과 Unchecked Exception에 대해 자세히 설명해주세요. Checked Exception Exception 클래스의 하위 클래스로 컴파일 단계에서 발생하는 예외를 의미합니다. 외부 리소스와의 상호작용 시에 발생하는 예외 등 예측 가능한 상황에서 사..

++/CS 2024.03.21

[TIL] CS공부 13일차

DTO에 대한 설명과 함께 왜 Entity 인스턴스를 Client에 그대로 전달하면 안되는지에 대해 설명해주세요. DTO 일반적으로 데이터를 담는 컨테이너로, 데이터베이스로부터 데이터를 읽어오거나 클라이언트로 데이터를 보낼 때 사용하는 데이터 전송 객체(Data Transfer Object)입니다. 데이터 은닉의 원칙 위반 Entity 클래스는 데이터베이스와 관련된 정보가 포함되어 있으므로 Entity 클래스를 그대로 노출하게 되면 데이터 은닉 원칙을 위반할 수 있습니다. 보안 문제 Entity에는 비즈니스 로직 외에도 데이터베이스와 관련된 정보가 포함될 수 있으므로 DTO를 사용하여 데이터를 캡슐화하여 클라이언트가 필요로 하는 데이터만 전달할 수 있도록 해야 합니다. 의존성 문제 Entity 클래스가 ..

++/CS 2024.03.20