1. 개요김영한 님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 을 들으면서 정리하는 포스팅입니다. https://www.inflearn.com/course/ORM-JPA-Basic 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 | 김영한 - 인프런김영한 | JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 실무에서도www.inflearn.com 2. 테이블, 스키마 매핑a. @Entity@Entity가 붙은 클래스는 JPA의 관리 대상이 된다.테이블과 매핑할 클래스는 @Entity 어노테이션을 붙혀주면 된다.JPA 내부에서 기본 생성자를 사용하기에 public..
전체 글
공부하면서 정리하는 블로그입니다. 틀린 내용이나 피드백 적극 환영합니다^^1. 개요Spring Data JPA를 제대로 활용하려면, JPA의 핵심 개념인 영속성 컨텍스트와 Entity 상태를 정확히 이해해야 한다.이번 글에서 이를 정리하려고 한다. 2. 영속성 컨텍스트(Persistence Context)란?JDBC, SQL Mapper와 같은 도구들은 개발자가 직접 쿼리를 작성하고, 해당 결과를 변수에 저장하는 방식으로 사용한다. 하지만, JPA는 데이터베이스와 애플리케이션 간의 데이터 동기화를 담당하는 중간 계층이 존재하는데 이것이 영속성 컨텍스트이다. 영속성 컨텍스트는 JPA의 핵심개념으로, 데이터베이스와 애플리케이션을 일관성을 유지하기 위해 Entity를 관리하는 가상의 데이터 저장소이다. 이를 통해 데이터를 효율적으로 조회하고 변경할 수 있다. 3. Entity 상태..
1. 개요성능 향상을 위해 속도가 빠른 메모리 기반 DB인 Redis를 사용한다.Redis는 데이터를 메모리에 저장하기 때문에 서버에 장애가 발생하거나 강제 종료될 경우 데이터가 모두 소실될 위험이 있다. 하지만 Redis는 설정에 따라 데이터를 디스크에 저장하여 어느 정도 영속성을 확보할 수 있다.Redis가 제공하는 데이터 저장 방식에는 RDB와 AOF 방식이 있으며, 각각의 방식을 알아보도록 하겠다. 2. RDB(Redis Database) 방식RDB 방식은 주기적으로 Redis의 전체 데이터를 스냅샷 형태로 저장하는 방식이다.redis.conf(설정파일)에서 주기와 조건을 설정할 수 있다. 장점서버가 재시작해도 최근 스냅샷 시점까지의 데이터는 복구 가능하여 데이터 손실을 최소화한다.스냅샷 파일은 ..
1. 개요이번에는 DB 트랜잭션과 Lock에 대해 정리하려고 한다. DB는 여러 사용자들이 동시에 데이터를 사용하도록 설계되었지만, 동시에 사용하면서 하나의 데이터에 동시에 여러 사용자가 접근하다보니, 데이터 정합성이나 불일치 문제가 발생할 수 있다. 이런 문제를 해결하기 위해서 트랜잭션과 Lock에 대한 개념을 공부할 필요가 있다. 2. 트랜잭션이란?트랜잭션은 하나의 작업 단위이다.예를 들어, A가 B에게 계좌 이체를 하는 경우 A 계좌에서 출금하고, B계좌에 입금된다. 만약 A 계좌에서 출금은 성공했으나, B계좌에 입금이 실패했을 경우 A계좌 출금을 롤백해줘야 한다. 이 때 사용하는 것이 트랜잭션이다.a. 트랜잭션 특징은 ACID를 따른다.원자성(Atomicity): 트랜잭션에 포함된 모든 작업은..
1.개요gitlab과 jenkins를 활용하여 배포 자동화를 구축하는 과정에 대해서 정리해보겠다.jenkins 프리스타일 프로젝트를 생성하여 gitlab 프로젝트와 연동하고, gitlab 트리거를 설정하여 자동배포를 구축해보았다. 참고로 gitlab 11.x.x 버전을 Docker 기반의 온프레미스 환경에서 사용하고 있다. 2. jenkins에서 gitlab 플러그인 설치Dashboard - Jenkins 관리 - Plugins 에서Available plugins를 클릭하여 Gitlab 검색 한 다음 아래 체크 박스에 체크한 다음 install 버튼을 클릭하여 설치를 진행한다. 3. gitlab에서 access token 발급jenkins에서 gitlab repository에 access 하기 위..
1. 개요자바에서 시스템 명령어(ping, ll 등)를 실행할 수 있는 도구를 찾아보았는데, ProcessBuilder라는 것을 알게되었다. 참고로 필자는 리눅스 명령어를 기반으로 다루겠다.윈도우나 다른 OS의 경우 해당 OS 명령어로 변경해서 적용할 수 있다. 그럼 이제 ProcessBuilder 사용 방법에 대해서 정리해보자. 2. ProcessBuilder란?ProcessBulder는 자바에서 시스템 명령어나 스크립트를 실행할 수 있으며, 다양한 프로세스의 입출력을 관리할 수 있는 클래스이다. 외부 디펜던시를 추가할 필요없이 java.lang 패키지에 포함되어 있다. 특징 및 기능으로 4가지로 정리할 수 있다.시스템 명령어 실행(ping, ll, mkdir 등)프로세스 실행환경 설정외부 프로세..
1. 개요사용하고 있는 os는 리눅스 redhat 계열릐 Rocky 8.10을 사용하고 있다.elasticsearch를 관리하기 위한 도구로 kibana 8.x.x 버전을 설치하고, kibana 설정을 수정해서 elasticsearch와 연동해보겠다. 2. 설치 방법a. yum repo 설정/etc/yum.repo/kibana.repo[kibana-8.x]name=Kibana repository for 8.x packagesbaseurl=https://artifacts.elastic.co/packages/8.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1 b. kibana 설치$ d..
1. 개요Linux 환경에서 kafka를 설치 과정을 공유하겠다. 필자는 Rocky Linux 8.10을 사용하고 있고, kafka 3.5.1 버전 설치를 완료했다.그럼 설치를 진행해보자. 2. 설치 방법a. java 설치kafka를 실행하기 위해서는 java가 필요하다. java를 설치해주자.$ dnf install java-17-openjdk b. kafka 다운로드 및 압축 해제kafka.3.5.1 버전 다운로드wget https://archive.apache.org/dist/kafka/3.5.1/kafka_2.13-3.5.1.tgz 압축 해제$ tar -xvf kafka_2.13-3.5.1.tgz c. zookeeper, kafka 실행kafka는 기본적으로 zookeeper가 필요하다.먼저 zo..
1. 개요회사에서 redhat 7 계열의 리눅스를 사용하고 있었다. 2024.06.30일부터 red hat 7은 지원이 종료되어, redhat 8을 사용하기로 했다. Nginx 서비스를 systemctl로 시작하면 permission denied 에러가 나면서 서비스 구동이 안됐다. 2. 원인/etc/nginx/nginx.conf에서 log 경로를 /data2/nginx/log로 수정하고 싶었다.# error_log /var/log/nginx/error.log notice;error_log /data2/nginx/log/error.log notice; 수정한 뒤 systemctl start nginx를 위에서 언급한 permission denied 가 발생하면서 구동이 안된다.red hat 7에서 ..
1. 개요사용하고 있는 OS는 리눅스 redhat 계열의 Rocky 8.10을 사용하고 있다.elasticsearch 5.6.16 버전을 설치해보겠다. 공식 사이트에서 버전별로 설치방법을 쉽게 확인할 수 있다. https://www.elastic.co/guide/en/elasticsearch/reference/5.6/rpm.html Install Elasticsearch with RPM | Elasticsearch Reference [5.6] | ElasticOn systemd-based distributions, the installation scripts will attempt to set kernel parameters (e.g., vm.max_map_count); you can skip this..