Spring Boot/DB
-
Flyway로 데이터베이스 마이그레이션 해보자 (이론편)Spring Boot/DB 2022. 7. 14. 19:43
Flyway란 무엇인가? Open Source Database Migration Tool - DB 형상 관리 (소프트웨어 변경사항 체계적으로 추적 통제하는 것) Git 처럼 데이터베이스의 History를 관리 해주는 도구이다. 데이터베이스에 직접 DDL을 입력하는게 아니라 SQL File로 데이터베이스를 변경/생성/삭제하며 관리할 수 있다. 즉, DB에 직접 접근하는게 아니라 코드에서 관리할 수 있음. 더나아가 누가, 언제, 어떤 테이블에 어떤 작업을 했는지 기록이 남는다. (퇴사자가 무엇을 했는지 확인 가능) 상상해보자.. 개발하다가 테이블 변경할 일이 생겼다. 그리고 DBA가 없는 회사다. 데이터베이스에 들어가서 ALTER TABLE..... 어쩌고 작성하는데 몇만건의 데이터가 있는 DB라면..? 너..
-
[Mybatis 시리즈 2] DataSouce와 DBCP (DataBase Connection Pool)Spring Boot/DB 2022. 4. 14. 23:03
Mybatis는 O/R Mapper다. 즉 Object와 Relational(관계형 데이터베이스)의 교두보 역할이다. 근데 다 떠나서, Web App이랑 DB랑 연결이 되어 있어야 쓰던가 말던 한다. 연결할때 사용하는 주요 키워드를 정리한다. JDBC - WAS에서 DB에 접근하려면? Application과 DB를 연결하는 것은 JDBC이다. JDBC Driver : 디비 벤더(오라클, mysql)에서 제공하는 DB와 연결하게 해주는 컴포넌트 DB 연결 과정 JDBC 드라이버 로드 **.jdbc.Driver Connection(Thread 생성) → DB 작업 처리 → Close : 이 과정에서 DB Connection 객체 생성 비용, 시간, 네트워크 연결 비용 등등 지속적인 부하 String driv..
-
[Mybatis 시리즈 1] 동작 원리와 스프링에서 어떻게 사용될까?Spring Boot/DB 2022. 4. 14. 22:06
본 시리즈는 빠르게 Mybatis를 사용해보는 목적으로 작성했습니다. 개요 MyBatis는 자바 오브젝트와 SQL문 사이의 자동 Mapping 기능을 지원하는 오픈소스 ORM 프레임워크 (Object Relational Mapping) 장점 Hibernate나 JPA 처럼 새로운 DB 패러다임을 익혀야하는 부담이 적다. JDBC 코드 작성의 불편함 제거 도메인 객체나 VO 객체 중심으로 개발이 가능하다. XML에 SQL 문을 분리하여 관리 → 개발자가 아닌 사람도 작성할 수 있다. Mybatis-spring, Mybatis3의 아키텍처 (스프링) JDBC : 디비 연결 → DataSource JDBC Driver : DB 벤더에서 제공하는 드라이버 Mybatis → JDBC는 저수준의 API, Mybat..
-
DB 연결 시, 특정 객체만 close() 하는 이유Spring Boot/DB 2022. 1. 11. 19:09
코드를 보던 중에 스프링 부트와 디비를 직접 연결하는 경우에는 꼭 연결했다가 해제해주는 것을 보았다. 한번 연결해 놓으면 될 것 같은데 왜 API 기능을 수행할 때마다 연결/해제를 반복해야 하는 걸까? 1) 운영체제가 외부 파일을 "열면" 다른 프로세스가 접근 못하도록 잠금을 하기 때문. DB가 계속 연결 중이면, API가 접근 할때 제약이 있을 수 있어 x.close()로 사용마다 연결을 끊어주어야 한다. When a file is "opened," the OS marks the file as locked, generally so it can't be deleted by other processes while it's being used. x.close() undoes the lock, allowing..