Spring Boot - AWS EC2 배포방법
·
AWS
프로젝트를 진행하면서, 배포를 처음 해보게 되었다. 배포 방법이 여러가지가 존재하기에 정리!!![ 정적 파일 배포 방식]: 애플리케이션 빌드 산출물(JAR, WAR 등)을 특정 서버나 위치에 배포하는 방식으로, 배포 대상 파일은 빌드 시점에 고정된 형태로 서버에 전달된다. 1. EC2에서 프로젝트를 Git Clone 후에 실행1-1. 절차   1. EC2에 접속: SSH 또는 AWS Systems Manager 등을 이용해 EC2 인스턴스에 접속   2. 필요한 소프트웨어 설치: Git, Java 등 프로젝트를 빌드하고 실행하는 데 필요한 패키지를 설치sudo yum update -ysudo yum install -y git java-11-openjdk       3. Git 리포지토리 클론: 프로젝트 ..
Spring JDBC
·
Spring Boot
Jdbc API는 Connection , Statement, ResultSet으로 매우 번거롭다. 그래서 Spring JPA는 Spring에서 지원해주는 JdbcTemplate을 사용함으로써 트랜잭션 동기화와 트랜잭션 추상화가 가능해지고, 간단하게 표현이 가능해졌다. 이를 Spring Transaction이라고 하는데, 사용방법으로는 1. 프로그래밍형 2. 선언적 방법이 있다. 이번 블로그에서는 2번인 선언적 방법에 대해서 다를 예정이다. 1번 프로그맹형에 대해서 간단하게 다루자면 아래와 같다.[프로그래밍형 - JdbcTemplat 사용]JdbcTemplate 기능Connection , Statement, ResultSet 묶음PlatformTransactionManager 인터페이스 -> 트랜잭션 추상..
JDBC와 Spring JDBC
·
DB
1. JDBC API: JDBC API는 3개로 구성되어있다. Connection 접속 -> Statement 쿼리 -> Resultset 결과Connection 인터페이스: DB 접속 (JDBC Driver를 통해 취득 - DriverManager / DataSource) 이 부분에 대해서는 따로 정리를 해두었음. (https://yoonhyojin.tistory.com/39)Statement 인터페이스: DB 쿼리Statement: SQL 쿼리를 실행하기 위한 가장 기본적인 JDBC 인터페이스SQL Injection 취약: SQL 문을 문자열로 직접 작성하여 실행하기 때문에, 사용자의 입력값이 SQL문에 그대로 삽입되기 때문에 공격성에 취약성능 저하: 매번 쿼리를 실행할 때 SQL 문을 파싱하고 컴파..
DB 연결: JDBC Driver / DB 조작: JDBC APIs
·
DB
JDBC API는 3개로 구성되어 있다. 이 중 Connection 접속 시 DriverManager 사용하면 물리적 접속인 것.Connection 접속Statement 쿼리ResultSet 결과Java가 DB를 사용하기 위해 가장 먼저 필요한 것은 Java Application과 DB를 연결하는 것이다. Java에서의 DB 접속은 물리적 접속과 논리적 접속 두 방식 중 하나를 선택하면 된다.물리적 접속: 매 접속 때마다 DB에 직접 붙는 것으로 Connection Create/ Close의 반복JDBC API 3개 중 Connection 접속 시 DriverManager 사용하면 물리적 접속인 것.논리적 접속: 매 접속 때마다 DB에 접속되어있는 Connection Pool 중 하나 사용 후 반환하여 ..
Spring Boot와 DB 연결
·
DB
[DB와 Spring Boot 연결방식]Spring Boot 로컬/도커로 구동(2가지) + 데이터베이스 로컬/도커로 구동(2가지)여기서는 Spring Boot를 로컬로 구동하고, 데이터베이스를 도커로 구동할 예정이다.Spring Boot를 로컬로 구동데이터베이스를 로컬로 구동: 방법 1 -> 로컬에서 개발 및 디버깅시 사용하는 가장 초보적인 방법데이터베이스를 도커로 구동: 방법 2 -> 로컬에서 개발 및 디버깅시 사용하는 방법Spring Boot를 도커로 구동데이터베이스를 로컬로 구동: 방법 3데이터베이스를 도커로 구동: 방법 4 -> 배포와 비슷한 환경 테스트 혹은 실제 배포시 사용하는 방법1. 로컬 내 Docker를 통해서 데이터베이스 서버 구동하기: PostgreSQL1-1 . Docker 실행아래..
트랜잭션 격리 레벨(Isolation Level)
·
DB
여기에서는 MySQL의 Undo 영역을 통한 MVCC 지원을 예로 모든 격리 수준을 설명한다.MVCC: 데이터베이스에서 읽기와 쓰기 작업의 동시성과 일관성을 높이기 위해 데이터를 여러 버전으로 관리하는 기술이다.- Undo 영역: 데이터를 변경하기 전, 기존 데이터를 백업하여 저장하는 영역으로 이를 통해 트랜잭션이 완료되지 않았을 때도 이전 데이터를 기반으로 읽기 작업을 수행할 수 있다.- Snapshot: 읽기 작업 시 특정 시점의 데이터 상태를 제공하는 기술로, 읽기 작업이 쓰기 작업의 영향을 받지 않도록 보장한다.- Garbage Collection: 트랜잭션이 종료되고 더 이상 필요하지 않은 이전 버전을 삭제하여 저장 공간을 관리한다. 버저닝: 데이터의 이전 상태를 기록하며, 변경 전의 데이터를 ..