Pular para o conteúdo

Filosofia e Escopo

O Mirror ORM não tenta ser um “canivete suíço” que faz tudo mal feito. Ele foi desenhado para ser um motor de reflexão de dados extremamente magro. Para manter o overhead em 39ns/row, tomamos decisões deliberadas de não implementar certas funcionalidades comuns em ORMs “pesados”.

FuncionalidadeStatusPor que?
MigrationsFora de escopoDDL é uma responsabilidade de infraestrutura. Recomendamos ferramentas especializadas como dbmate, Umzug ou SQL puro.
ValidaçãoFora de escopoValidar regras de negócio no mapeamento degrada a performance. Use class-validator nos Lifecycle Hooks para validação desacoplada.
Lazy LoadingNão suportadoLazy loading via Proxies esconde queries assíncronas e causa o problema N+1 silencioso. No Mirror, o carregamento é sempre explícito.
Entity ManagerNão suportadoEvitamos o “God Object” que rastreia tudo. O Mirror é stateless por padrão, garantindo previsibilidade e baixo consumo de memória.
CLINão suportadoO Mirror é uma biblioteca de runtime. Não há geração de código ou ferramentas de terminal inclusas no core.

Os Pilares do Mirror

  1. Explicit over Implicit: Você sempre sabe quando uma query está sendo executada. Sem surpresas em getters de propriedades.

  2. Stateless Efficiency: Usamos Snapshotting em vez de Proxies para Dirty Checking. Isso mantém a velocidade de acesso às propriedades da classe idêntica à de um objeto nativo.

  3. JIT Hydration: No bootstrap, compilamos um hidratador específico para cada uma de suas entidades. O V8 otimiza esse código, eliminando loops genéricos durante a leitura de milhares de linhas.

Quando usar o Mirror?

  • Se você precisa de performance de Raw SQL, mas quer a segurança de tipos do TypeScript.

  • Se o seu ambiente (Serverless/Edge) exige um Cold Start instantâneo.

  • Se você quer controle total sobre o que o seu ORM está enviando para o banco de dados.