LoginSignup
6
7

More than 3 years have passed since last update.

typescriptで使用できるORMライブラリ

Posted at

そもそもORMとは

ORM(Object-Relational Mapping)は、オブジェクト指向パラダイムを使用してデータベースからデータを照会および操作するのに役立つ手法です。

利点

  • データモデルを1か所に記述することになるため、コードの更新、保守、再利用が簡単になります。
  • MVCコードの記述を強制するので、コードがよりクリーンになります。
  • SQLクエリを作成する必要はありません。
  • データベースレベルの変更を頻繁に行う必要はありません。
  • ほとんどの作業は自動化されています。

欠点

  • 複雑なクエリでのパフォーマンスの問題。
  • 慣れるまでは学習コストがかかります。

typescriptで使用できるORMライブラリ

1. Sequelize

example
const { Sequelize, Model, DataTypes } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory:');

class User extends Model {}
User.init({
  username: DataTypes.STRING,
  birthday: DataTypes.DATE
}, { sequelize, modelName: 'user' });

(async () => {
  await sequelize.sync();
  const jane = await User.create({
    username: 'janedoe',
    birthday: new Date(1980, 6, 20)
  });
  console.log(jane.toJSON());
})();

2. TypeORM

  • 2016年頃に導入され、その人気は過去2、3年で急速に高まっています。
  • この人気の背後にある主な理由は、TypeORMがTypeScriptとJavaScript(ES5、ES6、ES7、ES8)を非常にサポートしていることです。
  • TypeORMは、最新のJavaScript機能を引き続きサポートし、開発者があらゆる種類のテクノロジーを使用できるようにするための新機能を提供することが目標であると述べています。
  • MySQL、MariaDB、Postgres、CockroachDB、SQLite、Microsoft SQL Server、Oracle、SAP Hana、sql.js、MongoDBなどの幅広いデータベース管理システムもサポートしています。
  • 他のJavaScriptORMと比較したTypeORMのもう1つの特徴は、アクティブレコードパターンとデータマッパーパターンの両方をサポートすることです。これにより、開発者は高品質で疎結合のスケーラブルなアプリケーションでコードを記述できます。
  • 実装していてまだまだ情報量が少ないのがネックだと感じますが、直感的で書きやすいです。
  • テーブル単位でコメントがつけられないのが地味に気になる。
example
import {Entity, PrimaryGeneratedColumn, Column, BaseEntity} from "typeorm";

@Entity()
export class User extends BaseEntity {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    firstName: string;

    @Column()
    lastName: string;

    @Column()
    age: number;

}

3. Mongoose

4. Bookshelf

  • Knex SQLクエリビルダと、それは、PostgreSQL、MySQLの、とSQLite3のデータベース管理システムをサポートしています。
  • JavaScriptでデータベースにクエリを実行し、これらのオブジェクト間の関係を形成する際の一般的なタスク用の単純なライブラリを提供することです。
  • https://bookshelfjs.org/

5. Objection.js

引き続き追記していきます!
参考
https://docs.google.com/spreadsheets/d/1mJ3uffp9TqrCvxHbnaEs_q8D5CorNx6R_DXq9cI8rU4/edit#gid=691713550

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7