전체 글 77

[PostgreSQL] 시퀀스 생성 및 테이블 적용

🍀기존에는 문서번호를 MAX+1 방식으로 생성하고 있었지만, 이 방식은 동시성 제어에 취약하여 중복 발생 가능성이 있기 때문에 시퀀스(Sequence)를 활용한 번호 생성 방식으로 변경하게 되었다. 🍀그래서 이번 글에서는 해당 시퀀스 방식에 대해 정리해보려고 한다 1. 시퀀스(Sequence)란?시퀀스(Sequence)는 유일한 숫자 값을 순차적으로 생성하는 객체주로 ID, 일련번호와 같은 기본키(PK) 또는 고유 식별자 컬럼을 자동 생성하는 데 사용된다. 2. 시퀀스의 주요 함수함수명설명nextval('seq')· 시퀀스 값을 1 증가시켜 반환· 조회만 해도 시퀀스 값이 증가함currval('seq')· 가장 최근 nextval()의 값을 반환함.· nextval을 호출한 세션 내에서만 유효.se..

DataBase/STUDY 2025.06.27

[SpringBoot] IntelliJ & GitLab 연동

Git Bash로 로컬저장소 준비하기# ① 새 Git 저장소 초기화git init# ② 원격(Origin) 주소 등록git remote add origin # ③ 원격(main 브랜치) 내용 가져오기git pull origin main 로컬에 파일이 이미 있다면 git add . && git commit -m "first commit" 후 git push -u origin main 으로 최초 푸시까지 마무리하면 된다. IntelliJ와 GitLab 연동 File ▸ New ▸ Project from Version Control… 클릭왼쪽 목록에서이미 Git Bash로 클론했다면 → Git Lab 선택클론까지 한 번에 받고 싶다면 → Repository URL 선택Repository URL 입력아래 Acc..

Spring Boot/STUDY 2025.06.09

[DB] DBeaver로 쿼리 실행 계획 분석

페이징 처리 기능을 구현하면서 OFFSET 방식과 ROW_NUMBER 방식 중 어떤 방식이 쿼리 성능에 더 좋을지 고민하다 성능 테스트를 해보았다. DBeaver로 테스트를 진행하게 되어서 정리 해보려 한다. 테스트할 쿼리를 작성한 후 Ctrl + Shift + E를 누르면 실행 계획을 볼 수 있는 팝업창이 뜬다.이때 ANALYZE, COSTS, TIMING 옵션을 체크한 후 실행하면 보다 정확한 실행 계획을 확인할 수 있다.🔹ANALYZE: 실제 쿼리를 실행하여 실행 시간과 row 수 등을 측정🔹COSTS: 쿼리의 비용 정보(cost)를 출력🔹TIMING: 각 단계별 실행 시간을 출력 Node Type: sql을 실행시키는 각각의 단계Entity: 조회하는 테이블Cost: sql 실행하는 데 걸..

DataBase/STUDY 2025.04.10

[Java] Optional 사용

✔️ Optional이란?Java8에서 추가된 클래스NullPointerException을 방지하고, null-safe하게 코드를 작성할 수 있도록 도와준다. 더보기⚠️ NullPointerException(NPE)이란?값이 없는(null) 객체의 메서드나 필드에 접근할 때 발생하는 런타임 예외프로젝트 중 브라우저에서 받아온 Map 객체에서 값을 꺼내 사용하려다 값이 존재하지 않는 key에 접근하면서 NullPointerException이 발생 😓이를 해결하기 위해 Optional을 적용했고,.orElse, .ifPresent 등을 활용해 문제를 해결했다. ⚪ Optioanl 객체 생성하기.empty()Optioanl.empty()비어 있는 Optional 객체 생성 .of(arg)Optioanl.of..

JAVA/STUDY 2025.04.10

[DB] DBEAVER 개인 서버 외부 접속 에러 해결

본 개발에 들어가기 전 Mapper.xml에 작성할 쿼리 작업을 진행하게 되었다. DB 테스트를 하기 위해 로컬 DB를 디비버에 연결해서 사용했다. 이 소식을 듣고 팀원이 함께 사용하고 싶다고 해서 내 IP주소를 전달해서 함께 사용하려 했다. 이 과정에서 에러가 발생했는데, 이 문제를 해결한 과정을 정리하려 한다! ✅ PostgreSQL을 사용했는데, pg_hba.conf 파일에 host 접속 포트를 열어주지 않아서 생긴 문제였다.🔻 pg_hba.conf 파일 찾기SQL_Shell(psql)에서 $SHOW hba_file; 명령어로 경로 찾기 🔻 pg_hba.conf 에서 포트 열어주기아래처럼 0.0.0.0/0으로 열어주니 우선 나는 내 IP로 DB 연동이 되었다.// 기존host all all 12..

기록/BE 2025.03.14

[설계] 공통코드 관리

코드란?있는 그대로 사용하기 불편한 정보를 약속된 형태로 압축한 간단한 기호 체계코드의 본질은 값의 분류, 범주화에 있다. 사용하는 이유속성을 코드화하면 그룹핑이 편리하여 집계가 용이해진다.하나의 값을 표현하는 방법이 다양하므로, 집계할 때 문제가 생길 여지가 있다.따라서 집계가 필요한 속성 데이터를 기호화하여 표준 코드로 관리하게 된다.프로그램 소스 코드 수준에서 로직 분기를 위해 사용할 수 있다.압축된 형태이므로 가독성을 높이고, 저장 공간의 효율성을 높일 수 있다.서비스 화면  수준에서 데이터를 유형화하여 조회하는 데 사용할 수 있다. 코드인 것을 구분하는 기준📎식별자엔티티의 개별 인스턴스를 유일하게 식별하는 방법을 제공하는 장치기본 키(PK)가 이에 해당한다.ex) 상품코드, 부서코드 등📎 코..

카테고리 없음 2025.02.06

[JPA] EntityManagerFactory, EntityManager

보통 Spring에서 JPA를 사용할 때, 엔티티 매니저(Entity Manager) 객체를 Spring 컨테이너로부터 주입 받아 사용한다. 엔티티 매니저를 사용하기 위해서는 엔티티 매니저 팩토리(EntityManagerFactory)라는 인터페이스 객체를 먼저 생성해야 한다. 지금까지 Spring 컨테이너의 도움을 받았기 때문에 엔티티 매니저 팩토리없이 JPA 사용이 가능했지만, JAVA SE에서 JPA를 사용하기 위해서는 엔티티 매니저 팩토리와 엔티티 매니저에 대해 알 필요가 있다. 엔티티 매니저 팩토리(EntityManagerFactory)JPA에서 EntityManager를 생성하기 위한 인터페이스엔티티 매니저를 생성해주는 공장 같은 개념이라고 생각하면 이해하기 쉬울 것이다엔티티 매니저 팩토리 생..

기록/BE 2024.11.11

[AWS] APM(Application Performance Monitoring)이란?

애플리케이션 성능 모니터링(APM)애플리케이션(시스템, 응용 소프트웨어)의 성능과 서비스 안정성을 감시하고 관리하는 솔루션실시간으로 서비스의 상태를 파악할 수 있도록 하며, 서비스의 이슈를 재빠르게 확인하고 분석할 수 있도록 도와준다.마치 숙련된 의사가 환자의 건강상태를 체크하듯, 애플리케이션의 성능을 모니터링하고, 장애를 빠르게 감지하여 대응할 수 있도록 돕는 일련의 시스템 관리 체계를 의미한다.⬇️ 애플리케이션 성능 문제 상황더보기온라인 쇼핑몰에서 결제하려는데 사이트가 느려서 결제가 안되는 상황콘서트 티켓 예매할 때, 사이트가 느려져 예약을 진행할 수 없는 상황이러한 경우 애플리케이션 성능 문제 때문일 수 있다.이런 성능 문제를 해결하여 사용자 경험을 좋게 만드는 데 도움을 주는 것이 APM🤨 애플..

AWS 2024.10.07

[Network] AP서버 vs Web서버 vs WAS vs DB서버

AP Server(Application Server)애플리케이션 서비스를 동작시키는 서버HTTP뿐만 아니라 TCP, UDP 등 다양한 프로토콜을 전달받아 클라이언트에 다양한 서비스를 제공한다.프론트엔드와 백엔드가 분리되지 않고 한 공간에 있는 서버를 AP 서버라고 한다.AP 서버 개념 안에 Web서버와 WAS가 있다. Web ServerHTML, CSS, JS 등 정적인 컨텐츠를 제공하는 서버프론트엔드를 담당하는 서버대표적으로 Apache, Nginx 등이 있다. WAS(Web Application Server)DB에서 조회한 데이터를 어떤 로직으로 처리해서 만든 동적인 컨텐츠를 제공하는 서버백엔드를 담당하는 서버대표적으로 Tomcat, Gunicorn 등이 있다.기본적으로 Apache와 Tomcat 기..

CS/Network 2024.10.04

[Spring] @PathVariable과 @RequestParam 차이점

회사 코드를 리뷰하던 중 @PathVariable과 @RequestParam을 하나의 메서드에서 함께 쓰길래 차이점이 궁금해서 찾아봤다😵‍💫 @PathVariable과 @RequestParam 모두 URI를 통해 전달된 값을 파라미터로 받아오기 위해 사용한다는 것은 알고 있었지만, 어떤 차이가 있는지는 잘 몰랐다.   ✔️ @RequestParam과 @PathVariable의 차이우선 두 어노테이션 모두 http의 비연결성을 극복하고 데이터를 전달하기 위한 방법 중 하나로, URI를 통해 전달된 값을 파라미터로 받아오는 역할을 한다.URI를 통해 값을 전달하는 방식http://localhost8080/home?page=1&size=10http://localhost8080/home1쿼리스트링을 사용하여..

Spring Boot/STUDY 2024.09.26