typeorm
typescript製OR Mapper.対応してるDB等多く、サポートしてるAPIも多いが、なかなか癖がある。
Driver
mysql用のdriverはmysql2よりもmysqlのほうが良いかもしれない。
スター数
mysql2だとDeprecatedな属性についてWarningを表示する
使用感
RepositoryパターンとActiveRecordパターン双方をサポートしている
ActiveRecordパターンの実装は、API内部でRepositoryに処理を移譲する
設定もjson、yml、XMLなど固定値だけでなく、jsや環境変数もサポート
できるだけ様々な形式をサポートすることで、ユーザーに選択の自由を委ねてる
環境変数での設定例
code:env
export TYPEORM_CONNECTION=mysql
export TYPEORM_HOST=localhost
export TYPEORM_PORT=3306
export TYPEORM_USERNAME=username
export TYPEORM_PASSWORD=passwd
export TYPEORM_DATABASE=dbname
export TYPEORM_SYNCHRONIZE=false
export TYPEORM_LOGGING=false
export TYPEORM_ENTITIES=src/models/**/*.ts
export TYPEORM_MIGRATIONS=src/db/migrations/**/*.ts
export TYPEORM_SUBSCRIBERS=src/db/subscribers/**/*.ts
export TYPEORM_ENTITIES_DIR=src/models/
export TYPEORM_MIGRATIONS_DIR=src/db/migrations
export TYPEORM_SUBSCRIBERS_DIR=src/db/subscribers
Transacton
code:typescript
let queryRunner = connection.createQueryRunner();
queryRunner.startTransaction();
queryRunner.commitTransaction();
Connection->EntityManager->EntityPersistExecutor