본문 바로가기
반응형

MySQL7

[NestJS] .env를 사용해서 MySQL 연동하기 일반적으로 데이터베이스를 연동할 때에 코드에 바로 데이터베이스 정보를 적지 않는다. 만약 하드코딩으로 백엔드 코드에 데이터베이스 정보를 집어넣고 실수로 깃허브에 커밋한다거나 유출이 되면 큰 문제가 생길 수 있기 때문이다. 따라서 보통 환경변수로 설정해 관리하곤 하는데 .env 파일을 이용해서 데이터베이스 정보를 환경변수로 설정하고 데이터베이스에 연동하는 방법을 알아보자. 먼저 MySQL에 연결하기 위해 사용한 typeorm 라이브러리를 설치하자. mysql2를 설치해야 별도의 라이브러리 설치 없이 사용가능하다. 루트 디렉토리에 .env 파일을 생성한다. 꼭 앞에 .을 붙여야 한다. 그 후 .env 파일내에 다음과 같이 데이터 베이스 정보를 적는다. 그리고 다음과 같이 appModule.ts 파일로 와서 .. 2023. 3. 9.
[TypeORM] insert와 save TypeORM을 쓰다보면 데이터베이스에 데이터를 insert 해야될 때 어떤 걸 써야할지 고민을 할 때가 있다. 보통 구글에 검색하면 1차적으로 나오는게 .save() 인데 .save()는 기본적으로 select 작업을 한다. 그래서 해당 데이터가 있으면 update 작업을 하고 없으면 insert 작업을 한다. (그러한 이유로 따로 update 작업을 할 때 .save()를 쓰면 불편할 때가 있다.) .save() 를 쓰면 select 작업이 실행 되기 때문에 단순데이터를 저장하는데에도 많은 리소스를 사용하고 성능저하의 주 원인으로 꼽힌다. 그래서 이 부분을 제거하고 순수하게 insert 쿼리만 수행하는 기능이 바로 .insert() 이다. 그러면 불필요한 select 연산 없이 insert 쿼리를 수.. 2023. 1. 31.
[NestJS]NestJS에서 Transaction(트랜잭션) 활용 프로젝트를 개발하면서 한 객체를 데이터베이스에 넣고 해당 인덱스를 활용하여 또 다른 insert 작업을 해야하는 상황이 발생했다. 만약 중간 단계에서 에러가 난다면 해당 작업 도중 발생한 insert를 모두 되돌려야 하는데 이럴 때 트랜잭션 단위로 묶어서 처리를 해줄 수 있다. 트랜잭션이 무엇인지 정리하고 프로젝트 도중 트랜잭션을 활용한 내용으로 공유하도록 하겠다. 트랜잭션(Transcation) 트랜잭션의 사전적 정의는 시스템에서 사용되는 더 이상 쪼갤 수 없는 업무 처리의 최소 단위라고 말할 수 있다. 데이터베이스에서의 트랜잭션은 데이터베이스 서버에 여러 개의 클라이언트가 동시에 엑세스를 하거나 응용프로그램이 갱신을 처리할 때 중단 될 수 있는 등 데이터 부정합을 방지하고자 할 때 사용한다. 예를 들.. 2023. 1. 27.
반응형