본문 바로가기

분류 전체보기145

Spring JPA Criteria API 소개와 예제 Spring JPA Criteria API 개념과 사용법 Spring Data JPA 동적 쿼리란Spring Data JPA의 동적 쿼리란 런타임 시점에 조건에 따라 동적으로 생성되는 쿼리를 의미합니다. 즉, 고정된 쿼리가 아닌, 입력 파라미터나 조건에 따라 쿼리가 달라지는 것을 말합니다. 동적 쿼리는 다양한 검색 조건이나 필터링 요구사항에 대응하기 위해 사용됩니다.예를 들어, 사용자로부터 여러 검색 조건을 받아 그 조건에 따라 데이터를 필터링하여 조회하는 경우를 생각해볼 수 있습니다. 동적 쿼리를 사용하면 사용자가 입력한 조건에 맞추어 쿼리를 조합할 수 있습니다. Criteria API 소개JPA Criteria API는 JPA 2.0에서 도입된 타입 안전한 쿼리 작성 방법입니다. 이는 SQL 쿼리를 .. 2024. 6. 7.
Spring Data JPA 어노테이션 OneToMany ManyToOne NamedQuery GeneratedValue Spring Data JPA 자주 사용하는 어노테이션 정리 - 1 Spring에서 JPA를 사용하면서 @Entity, @Table, @Column 등등 여러 어노테이션을 접하게 되었는데 이 어노테이션들의 정확한 역할과 추가적으로 설정할수 있는 옵션들에 대해 자세하게 정리할 필요를 느껴서 작성하게 되었습니다. @Entity엔티티 클래스와 DB의 테이블을 매핑하기위해 사용하는 어노테이션 입니다. JPA 기능을 사용하기 위해서 필수적으로 들어가야하며 name 옵션으로 매핑할 DB의 테이블명을 지정할수 있습니다.name 옵션을 사용하지 않을시 클래스 이름으로 테이블과 매핑됩니다. 예제 코드@Entity(name = "user")public class User { ...} @Table@Entity 어노테이션.. 2024. 5. 20.
Vault 암호화 관리 시스템 개념, Transit Secret Engine 예제 Vault, 암호화 관리 시스템 Vault 기본 개념 Vault는 비밀 및 암호화 관리 시스템으로, 안전하고 제한된 액세스를 제공합니다. 사용자, 기계, 앱 등의 클라이언트를 인증하고 권한을 부여하여 비밀 및 민감한 데이터에 접근할 수 있도록 합니다. 이는 통합된 인터페이스를 통해 모든 비밀에 엄격한 액세스 제어와 자세한 로그를 제공합니다. Vault Workflow 인증(Authenticate): 볼트에서 인증은 클라이언트가 제공한 정보를 사용하여 인증하는 과정입니다. 클라이언트가 인증되면 토큰이 생성되고 해당 토큰은 정책과 연결됩니다. 검증(Validation): 볼트는 클라이언트를 Github, LDAP, AppRole 등과 같은 제3자 신뢰할 수 있는 소스에 대해 검증합니다. 권한 부여(Autho.. 2024. 3. 25.
Java 리액티브 StepVerifier 설명 예제 [Java] 리액티브 프로그래밍 StepVerifier StepVerifier란? StepVerifier는 Reactive Streams API를 사용하는 테스트를 위한 유틸리티 클래스입니다. Mono, Flux와 같은 Reactive Publisher를 테스트하는데 사용됩니다. Java 리액티브 Mono & Flux 참고글 주요 기능 데이터 검증: 예상되는 데이터와 실제 발행되는 데이터를 비교 에러 검증: 예상되는 에러가 발생하는지 검증 완료 검증: Publisher가 완료되었는지 검증 시퀀스 조작: 데이터 발행 순서를 조작하거나 특정 데이터를 건너뛸 수 있습니다. 백프레셔 시뮬레이션: 백프레셔 상황을 시뮬레이션하여 테스트를 수행합니다. 백프레셔란 Publisher에서 생산되는 데이터들의 양이 Subs.. 2024. 2. 20.
Java 리액티브 Mono Flux 설명 예제 [Java] 리액티브 프로그래밍 Flux & Mono 리액티브 프로그래밍 리액티브 프로그래밍은 변화하는 데이터 스트림과 이벤트에 대한 반응을 표현하는 프로그래밍 패러다임입니다. 기본적으로 비동기 방식으로 작동하여 데이터 흐름을 기반으로 코드를 작성하고 데이터 변화에 자동으로 반응하도록 설계되었습니다. 특징 비동기 처리: 스레드와 락에 의존하지 않고 비동기 방식으로 데이터를 처리합니다. 시스템 성능을 향상시키고 콜백 지옥(callback hell)을 방지하는 데 도움이 됩니다. 데이터 흐름 기반 프로그래밍: 데이터 스트림을 기반으로 코드를 작성하여 데이터 변화에 자동으로 반응하도록 설계되어서 코드를 보다 간결하고 유지 관리하기 쉽게 만들어줍니다. 반응형 시스템 구현: 외부 요청에 신속하게 반응하고 빠른 응.. 2024. 2. 6.
Rancher 쿠버네티스 클러스터 생성과 관리 쿠버네티스 관리도구 Rancher 랜처는 컨테이너와 쿠버네티스 클러스터를 관리, 배포하기에 최적화된 도구입니다. 최초버전에는 쿠버네티스 뿐만 아니라 다른 컨테이너 오케스트레이션들도 지원을 했지만 현재는 쿠버네티스만 지원하고 있습니다. Rancher 특징 노드를 직접 계산하여 쿠버네티스를 설치하거나 기존에 설치되있는 쿠버네티스 클러스터를 불러올수도 있습니다. 모든 클러스터에 대해 인증및 역할기반 액세스 제어(RBAC)를 중앙 집중화하여 글로벌 관리자가 한곳에서 클러스터 접근을 제어할수있습니다. 그런 다음 클러스터 및 해당 리소스에 대한 세부 모니터링 및 알림을 실행하고 로그를 외부 공급자로 전송하며 애플리케이션 카탈로그를 통해 Helm과 직접 통합됩니다. 외부 CI/CD 시스템을 사용하는 경우 랜처에 연결.. 2024. 1. 30.
[Docker] Jar 파일 컨테이너 실행 [Docker] Jar 파일 컨테이너로 실행하기 Jar 파일 생성 도커 컨테이너를 만들기 전에 spring boot 로 만든 웹 애플리케이션의 jar 파일을 생성해야 합니다. gradle build 먼저 프로젝트 build를 실행합니다. Gradle Tasks 탭 - boot Jar build가 끝나면 bootJar를 실행하여 jar 파일을 생성합니다. 실행이 끝나면 프로젝트 /build/libs 경로에 [프로젝트명]-[버전]-SNAPSHOT.jar 형식으로 jar 파일이 생성됩니다. Dockerfile 작성및 빌드 이제 jar 파일을 가지고 docker build 를 해보겠습니다. jar 파일과 Dockerfile 둘다 동일한 경로에 위치해있습니다. Dockerfile 작성 vi Dockerfile F.. 2024. 1. 30.
[Docker] Mysql DB 실행 외부접속 [Docker] Mysql DB 실행 외부접속 리눅스에서 도커 이미지로 mysql 를 실행해보고 외부에서 접속하는 방법까지 설명 해보겠습니다. docker 설치 / 실행 docker가 설치가 안되있는 환경의 경우 docker를 먼저 설치후 실행합니다. Ubuntu / Debian sudo apt-get update sudo apt-get install docker.io sudo systemctl start docker CentOS / Fedora sudo yum install docker sudo systemctl start docker docker가 정상적으로 설치후 실행되었는지 확인합니다. sudo systemctl status docker mysql 컨테이너 실행 도커로 특정 이미지를 실행할때 순서.. 2024. 1. 30.