Spring Security란?
·
Spring
Spring Security란? Spring Security는 Java 애플리케이션, 특히 Spring 기반 프로젝트의 보안을 위한 프레임워크로, 인증과 인가(권한 부여)를 주요 목적으로 한다. 자바 개발자들이 보안 기능을 추가할 때 Spring Security 사용하는 이유는 Spring Security가 Spring의 생태계에서 보안에 필요한 기능들을 제공하기 때문이다. Spring Security는 개발 구조가 Spring이라는 프레임워크 안에서 활용하기 적합한 구조로 설계되어 있어, 보안 기능을 추가할 때 활용하기 좋다.인증(Authorizatoin)과 인가(Authentication) 인증 (Authentication)"누구인가?"를 확인하는 과정이다.과정사용자가 시스템에 로그인할 때 자신을 증..
crontab이란?
·
Linux
크론탭(Crontab)이란? 크론탭(Crontab)은 리눅스 및 유닉스 계열 시스템에서 정기적으로 실행할 작업을 예약하는 도구이며, 주로 반복적인 작업(예: 백업, 시스템 점검, 로그 파일 정리 등)을 자동화하는 데 사용된다."크론(Cron)"은 시스템의 시간 기반 작업 스케줄러이고, "탭(Tab)"은 특정 작업의 예약 목록을 의미한다. 크론탭의 기본 구성은 다음과 같다.시간 설정: 작업이 실행될 시간, 날짜, 요일 등을 지정명령어 실행: 예약된 시간에 실행할 명령어를 지정즉, 크론탭은 시스템에서 cron 서비스를 통해 관리되며, 이 서비스는 백그라운드에서 주기적으로 실행되어 지정된 작업을 수행한다. 크론탭 설치 방법 대부분의 경우, Red Hat 계열 배포판 (RHEL, CentOS, Fedora 등)..
디스크 입출력 성능과 dd 명령어
·
Linux
운영중에 있는 서버가 갑자기 느려져서 서버의 입출력 성능을 측정하기 위해 dd명령어를 사용하게 되었고, 이에 대해 정리해보고자 한다.디스크 I/O 성능이란? 디스크 I/O(Input/Output) 성능은 시스템 성능에 중요한 영향을 미치는 요소 중 하나이다. 특히 데이터베이스 서버나 파일 서버와 같이 디스크에서 데이터를 읽고 쓰는 작업이 많은 경우, I/O 성능이 병목이 될 수 있다. 디스크 I/O 성능이 낮으면 시스템 전체의 성능이 저하될 수 있으므로, 서버를 최적화하기 위해서는 디스크 I/O 성능을 파악하고 관리하는 것이 필수적이다. 디스크 I/O 성능을 측정하는 주요 지표는 다음과 같다:Throughput(처리량): 초당 처리할 수 있는 데이터의 양(예: MB/s).Latency(지연 시간): 디스..
해시 테이블의 이해와 충돌 해결
·
카테고리 없음
해시테이블이란? 해시 테이블은 (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료구조이다.예를 들어 우리가 (Key, Value)가 ("John Smith", "521-1234")인 데이터를 크기가 16인 해시 테이블에 저장한다고 하자.그러면 먼저 index = hash_function("John Smith") % 16 연산을 통해 index 값을 계산한다. 그리고 array[index] = "521-1234" 로 전화번호를 저장하게 된다. 이러한 해싱 구조로 데이터를 저장하면 Key값으로 데이터를 찾을 때 해시 함수를 1번만 수행하면 되므로 매우 빠르게 데이터를 저장/삭제/조회할 수 있다.  해시테이블의 평균 시간복잡도는 O(1)이다. 해시 테이블의 주요..
Spring Boot와 Redis연동하여 사용하기
·
Spring
DB에 있는 다량의 데이터를 지속적으로 조회하면 서버에 큰 부하가 발생할 수 있다. 물론 DB 서버를 Scale-out하는 방식으로 서버의 부하 분산 처리를 진행할 수도 있지만, 자주 조회되는 데이터는 Redis에 캐시로 저장하여 사용하는 것이 좋은 방안 중 하나일 수 있다. Redis는 메모리 기반 데이터베이스로, 데이터를 빠르게 읽을 수 있어 데이터베이스에 직접 접근하는 횟수를 줄여준다. 이렇게 캐시로 활용함으로써 서버 부하를 줄이고, 애플리케이션의 응답 속도를 크게 향상시킬 수 있다.Redis란? Redis는 Remote Dictionary Server의 약자로, 오픈 소스 기반의 메모리 키-값 저장소이다. NoSQL 데이터베이스로, 관계형 데이터베이스(RDBMS)와 달리 고정된 스키마가 없으며 유..
JPQL과 네이티브 SQL
·
Spring
JpaRepository는 기본적인 CRUD 기능을 제공하며, 이는 데이터베이스와의 상호작용을 간편하게 해준다. 하지만 복잡한 조건이 필요한 쿼리나 조인이 필요한 경우, 메서드 이름이 길어지거나 작성하기 어려울 수 있다. 이에 스프링에서는 @Query라는 어노테이션을 지원한다.@Query란? Spring Data JPA에서 사용되는 어노테이션으로, 데이터베이스에 대한 쿼리를 명시적으로 정의할 수 있게 해준다. JPQL(Java Persistence Query Language) 또는 네이티브 SQL 쿼리를 작성할 수 있다. JPQL JPQL(Java Persistence Query Language)은 JPA에서 사용되는 객체 지향 쿼리 언어이다. JPQL은 SQL과 유사한 문법을 가지지만, 데이터베이스 테..
Caused by: org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL
·
Spring
네이티브 SQL을 사용 도중 다음과 같은 오류가 발생하였다. 오류 내용을 보면, 네이티브 SQL을 분석했지만, DB에 productprice라는 컬럼이 없다는 오류였다.Caused by: org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [SELECT * FROM product p WHERE p.productprice > 2000] [(conn=1050) Unknown column 'p.productprice' in 'where clause'] [n/a] 아래는 ProductEntity와 ProductRepository에 작성한 네이티브 쿼리이다.@Entity@Table(name = "product")public class..
쿼리 메소드란?
·
Spring
Spring Boot에서 JPA 사용하기 (tistory.com)앞선 글에서, JpaRepository를 상속한 Repository가 실질적으로 DB와 통신하고 기본적인 CRUD 기능을 제공한다고 하였다. 그것의 모음을 쿼리 메소드라고 하는데 어떠한 쿼리 메소드가 있고 사용은 어떻게 하는지 알아보자.쿼리 메소드란? Query Method는 메소드 이름을 기반으로 자동으로 쿼리를 생성하여 데이터베이스에서 데이터를 조회할 수 있게 해주는 기능이다. JpaRepository 인터페이스에서 해당 인터페이스와 매핑되어 있는 테이블에 요청하고자 하는 SQL을 메소드 이름을 사용하여 선언할 수 있으며, 이를 통해 복잡한 JPQL이나 SQL을 작성하지 않고도 필요한 쿼리를 쉽게 작성할 수 있다. 쿼리 메소드 종류 JP..