본문 바로가기

BackEnd7

TypeORM Repository 조건(옵션) 안될 때 한 줄 요약: TypeORM을 사용하기 위해서는 엔티티 클래스의 필드를 private으로 두면 안된다.   오류는 아니고.. Nest로 개발하다 생각지도 못한 삽질을 해버렸다.   아래의 코드처럼 TypeORM을 사용해 역시 typeorm 에서 제공하는 Repository를 서비스에서 주입받아 사용하고 있었는데@Injectable()export class UserService { constructor( private userRepository: Repository ) {}... 기능을 구현하다보니, Repository에서 제공하는 메서드 중 옵션을 줘야하는 메서드를 사용하게 될 일이 있었다. await this.userRepository.findOneBy({ id: userId });요런 식으로.. 2024. 9. 10.
Nest-cli로 프로젝트 생성 시 git 추적 안되는 문제 한줄요약 : 프로젝트 생성 시 깃 레포지토리 초기화를 스킵하는 옵션을 주고 생성하면 된다.nest new --skip-git     github 레포지토리를 생성하고 Nest-cli를 통해 Nest 프로젝트를 생성했다.아래 명령어로 생성nest new  프로젝트가 생성되며 node-modules 를 install 하는 단계에서git으로 잘 추적되던 프로젝트 폴더가 갑자기 통째로 추적을 멈춰버리는 문제가 있었다. untracked files에 해당 폴더가 있길래강제로 git이 추적하도록 하기 위해git add --force명령어를 사용해보았지만 아무런 변화가 없고, 여전히 폴더 째로 untracked된 상태였다. 깃헙에서 레포지토리를 생성할 때 깃헙에서 제공하는 템플릿으로 생성된 .gitignore가 문제.. 2024. 8. 21.
Node.js 의 이벤트 루프 Node.js 를 공부하다 이벤트 루프라는 개념이 어려워 정리해두었다. 이벤트 루프란? Node.js 는 하나의 스레드(싱글 스레드)에서 작업을 처리. 이벤트 루프란 시스템 커널에서 가능한 작업이 있다면 그 작업을 커널에 이관하여 JavaScript 가 싱글 스레드임에도 논블로킹(비동기) I/O 작업을 수행할 수 있게 해주는 기능. 이벤트 루프의 단계 아래 그림의 화살표 방향으로 루프가 실행. (timers → pending callbacks …. → close callbacks → timers …) 각 단계에는 각각 실행할 콜백 함수를 담기 위한 큐가 존재 이벤트 루프가 특정 단계에 진입하면 해당 단계에서 필요한 작업을 수행 후, 해당 단계의 큐에서 콜백을 실행. 실행하여 큐가 모두 비거나 콜백 제한 .. 2024. 3. 5.
JPA - 영속성 컨텍스트 영속성 컨텍스트(Persistence Context) JPA 내부동작의 핵심. 엔티티를 영구적으로 저장하는 환경. 엔티티 매니저가 생성될 때 하나 만들어지며, 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리 엔티티의 생명 주기 비영속(new/transient) 단순히 엔티티 객체를 생성하여 영속성 컨텍스트에는 저장되지 않은 상태 em.merge() 를 통해 비영속 상태의 엔티티를 영속 상태로 만들 수 있음 영속(persisted/managed) 엔티티 매니저를 통해 영속성 컨텍스트에 객체를 저장하여 관리되고 있는 상태 EntityManager.persist(entity) ⇒ 엔티티를 영속화. 엔티티 매니저를 통해 영속성 컨텍스트에 접근해 엔티티를 관리한다. 준영속(detached) 영속성 컨텍스.. 2024. 1. 15.