検索
ホームページウェブフロントエンドjsチュートリアル9 2024年のベストJavaScriptとTypeScript orms

9 Best JavaScript and TypeScript ORMs for 2024

この記事では、オブジェクトリレーショナルマッピング(ORM)、orm

ライブラリ、および次のJavaScriptプロジェクトで使用を検討する必要がある理由を簡単に説明します。また、プロジェクト開発者およびメンテナンスワーカーとしてのニーズに基づいて、最高のJavaScriptおよびTypeScript ORMライブラリを評価するお手伝いをします。

次の各ツールを見ていきます。

knex.js:sql query builder
  • 続編
  • 本棚
  • ウォーターライン
  • deploction.js
  • mongoose
  • typegoose
  • typeorm
  • mikroom
  • prisma
  • オブジェクトリレーションシップマップ

オブジェクトリレーショナルマッピングは複雑に見えるかもしれませんが、その目的はプログラマとしての生活を楽にすることです。データベースからデータを取得するには、クエリを記述する必要があります。しかし、これはあなたがSQLを学ばなければならないことを意味しますか?いいえ、オブジェクトリレーショナルマッピングを使用すると、選択した言語でクエリを書くことができます。

オブジェクトリレーショナルマッピングは、データベースクエリの結果をエンティティクラスインスタンスに変換する手法です。エンティティは、データベーステーブルのオブジェクトラッパーにすぎません。データベーステーブル列にマッピングされたプロパティが含まれています。エンティティインスタンスには、CRUD操作を実行し、検証やデータ暗号化などのカスタムロジックを含む他の機能をサポートする方法があります。

小さなプロジェクトを構築している場合は、ORMライブラリをインストールする必要はありません。 SQLステートメントを使用してアプリケーションを駆動するだけで十分です。 ORMは、数百のデータベーステーブルからデータを取得する中型および大規模プロジェクトにとって非常に有益です。この場合、アプリケーションのデータレイヤーを一貫した予測可能な方法で操作および維持できるフレームワークが必要です。

エンティティクラスは、ビジネスルールを実装するために使用されるロジックをカプセル化するように設計されているため、ビジネスアプリケーションのビルディングブロックです。ビジネスルールは、自動化されたプロセスがビジネスポリシーの範囲内でのみ実行されることを保証するために定義されます。ビジネスルールの例は次のとおりです

顧客割引

    ローンの承認
  • 販売委員会
  • 配送と税の計算
  • ormライブラリ
オブジェクトリレーショナルマッピングは通常、ライブラリの助けを借りて行われます。 ORMという用語は、ほとんどの場合、実際のORMライブラリ(オブジェクトの関係

マッパー

)を指します。これは、オブジェクト関係の作業をマッピングします。

ビジネスルールでは、通常、複数のSQLステートメントのバッチ実行が必要です。単一のSQLステートメントが失敗した場合、データベースを一貫性のない状態にしておくことがあります。ほとんどのORMライブラリは、トランザクションと呼ばれる機能をサポートしており、このようなイベントが発生するのを防ぎます。このトランザクションコンテキストでSQLステートメントが実行されない場合、そのバッチで正常に実行された他のすべてのSQLステートメントは、ロールバックと呼ばれる操作によって非表示になります。 したがって、ORMライブラリを使用してデータレイヤーを構築すると、データベースが常に一貫していることを確認することができます。 ORMライブラリには通常、次のようなより基本的な関数が含まれています。

  • クエリビルダー
  • 移行スクリプト
  • ボイラープレートコードを生成するためのCLIツール
  • テストデータを使用した事前充填テーブルの
  • sow関数
  • この記事では、各ORMライブラリが次のことをどのように行うかについてのコードのスニペットを提供します。

初期設定と構成

    基本的なCRUD操作
  • 高度なクエリ操作
  • 起動日、ユーザー数、ドキュメントリンク、利用可能なサポートチャネルなどの重要な情報も含まれています。また、意思決定を行う際に慎重に重量を量る必要があるというクエリのパフォーマンス、ライブラリのメンテナンス、および建築哲学に関連する最も重要な問題についても説明します。
最初から最新のものまでの開始日までにリストを並べ替えました。主なサポートされた言語に従って、リストを2つの部分に分割しました:JavaScriptとTypeScript。

評価を開始する前に、まずknex.jsを見てみましょう。knex.jsは、ここにリストされている多くのORMライブラリと統合された人気のSQLクエリビルダーです。 KNEX.JSは非常に柔軟であり、一般に、クエリビルダーの独自の組み込み実装を持つ一部のORMライブラリよりも優れています。 knex.jsをその基礎として使用するORMライブラリを選択する際の利点と考えてください。

knex.js:sql query builder

開始:2012年12月

    ウェブサイト
  • github:158.6kユーザー
  • データベース:Postgres、MSSQL、MySQL、Mariadb、SQLite3、Oracle、およびAmazon Redshift
  • knex.jsは現在、node.jsおよびブラウザーで実行できる最も成熟したJavaScript SQLクエリビルダーです(Webpackまたはbrowserify経由)。手動で記述されたSQLステートメントと同じ高性能SQLクエリを生成できます。
では、クエリビルダーとは何ですか?

これは、クエリを形成するためにリンクしてリンクできる一連の関数を提供するAPIにすぎません。例は次のとおりです。

これは質問を請います、なぜ元のSQLステートメントを書く代わりにクエリビルダーを使用する必要があるのですか? 4つの理由を説明します:

<code>knex({ a: 'table', b: 'table' })
  .select({
    aTitle: 'a.title',
    bTitle: 'b.title'
  })
  .whereRaw('?? = ??', ['a.column_1', 'b.column_2'])

SQL 输出:
select `a`.`title` as `aTitle`, `b`.`title` as `bTitle` from `table`
as `a`, `table` as `b` where `a`.`column_1` = `b`.`column_2`
</code>

データベースのSQL方言からコードを抽象化するのに役立ち、切り替えを容易にします。

    アプリケーションに対するSQLインジェクション攻撃の可能性を排除または大幅に減らします。
  • 動的条件のクエリを簡単に構築できます。
  • データベース開発操作を実行するための他の機能やCLIツールがあります。
  • これらの関数には次のものが含まれます
接続プール

コールバックとプロミスインターフェイス
  • ストリームインターフェイス
  • トランザクションサポート
  • モードサポート
  • 移行
  • 種子を播種
  • アプリケーションにインストールするには、knex.jsパッケージと使用しているデータベースのドライバーをインストールする必要があります。
  • これはセットアップコードの例です。

これは基本的なクエリの例です
<code>$ npm install knex --save

# 然后添加以下一个(添加 --save)标志:
$ npm install pg
$ npm install sqlite3
$ npm install mysql
$ npm install mysql2
$ npm install oracledb
$ npm install mssql
</code>

生のSQLステートメントもサポートしています。複雑なクエリの例は次のとおりです

<code>const knex = require('knex')({
  client: 'mysql',
  connection: {
    host : '127.0.0.1',
    user : 'your_database_user',
    password : 'your_database_password',
    database : 'myapp_test'
  }
});

knex.schema.createTable('users', function (table) {
  table.increments();
  table.string('name');
  table.timestamps();
})

输出:
create table `users` (`id` int unsigned not null auto_increment primary key, `name` varchar(255),
`created_at` datetime, `updated_at` datetime)
</code>
knex.jsはタイプスクリプトもサポートしています。これは、次のようなコードを書くことができるため、素晴らしいことです。
<code>knex({ a: 'table', b: 'table' })
  .select({
    aTitle: 'a.title',
    bTitle: 'b.title'
  })
  .whereRaw('?? = ??', ['a.column_1', 'b.column_2'])

SQL 输出:
select `a`.`title` as `aTitle`, `b`.`title` as `bTitle` from `table`
as `a`, `table` as `b` where `a`.`column_1` = `b`.`column_2`
</code>

上記のタイプスクリプトの例では、knex.jsはほぼORMとして機能します。ただし、エンティティオブジェクトインスタンスは作成されません。代わりに、インターフェイス定義を使用して、タイプセーフプロパティを備えたJavaScriptオブジェクトを作成します。

この記事にリストされているORMライブラリの多くは、バックグラウンドでknex.jsを使用していることに注意してください。これらには次のものが含まれます

    本棚
  • deploction.js
  • mikroom
ormライブラリは通常、knex.jsの上に追加機能を提供します。次のセクションでそれらを見てみましょう。

javascript ormライブラリ

このカテゴリでは、ここにリストされているすべてのライブラリはjavascriptに記載されており、node.jsで直接実行できます。タイプスクリプトサポートは、組み込みタイプまたは @タイプ/ノード定義パッケージを介して提供されます。 TypeScriptプロジェクトの最大のサポートが必要な場合は、TypeScript ORMライブラリセクションにスキップする必要があります。

データアクセスレイヤーでは、2つの一般的なアーキテクチャパターンが使用されます。

データマッパー

    アクティビティレコード
  • データマッパーパターンを使用すると、エンティティクラスは純粋で、プロパティのみが含まれています。 CRUD運用とビジネスルールは、リポジトリと呼ばれるコンテナに実装されています。例は次のとおりです。

CRUDオペレーションとビジネスルールのロジックは、アクティブレコードモードを使用してエンティティクラスで実装されています。上記を説明する同様の例があります:

<code>$ npm install knex --save

# 然后添加以下一个(添加 --save)标志:
$ npm install pg
$ npm install sqlite3
$ npm install mysql
$ npm install mysql2
$ npm install oracledb
$ npm install mssql
</code>
いずれかのモードを使用することには、その利点と短所があります。これらのパターンは、2003年のBook Enterprise Application Architecture PatternsでMartin Fowlerによって命名されました。このトピックについて詳しく知りたい場合は、この本をチェックしてください。この記事にリストされているORMライブラリのほとんどは、一方または両方のモードをサポートしています。

今すぐ注意を払い始めましょう。
<code>const knex = require('knex')({
  client: 'mysql',
  connection: {
    host : '127.0.0.1',
    user : 'your_database_user',
    password : 'your_database_password',
    database : 'myapp_test'
  }
});

knex.schema.createTable('users', function (table) {
  table.increments();
  table.string('name');
  table.timestamps();
})

输出:
create table `users` (`id` int unsigned not null auto_increment primary key, `name` varchar(255),
`created_at` datetime, `updated_at` datetime)
</code>

続編

開始:2010年7月

ウェブサイト
  • github:726kユーザー
  • slack
  • データベース:Postgres、mysql、mariadb、sqlite、およびmicrosoft sql server
  • Sequelizeは、非常に成熟した人気のあるnode.js ormライブラリで、よく説明されたコードの例を備えた優れたドキュメントを備えています。以前のライブラリで言及したデータレイヤー機能の多くをサポートしています。 Bookshelfとは異なり、knex.jsと同様に演奏する独自のクエリビルダーがあります。
  • ライブラリのインストールは非常にシンプルで、データベースドライバーも非常に直接的です:

以下は、セットアップコードとCRUDおよび基本的なクエリステートメントの例です。

以下は、複雑なクエリの書き方の例です。
<code>knex('users').where({
  first_name: 'Test',
  last_name:  'User'
}).select('id')

输出:
select `id` from `users` where `first_name` = 'Test' and `last_name` = 'User'
</code>

最後の複雑なクエリの例では、SQL出力は次のとおりです。

<code>const subcolumn = knex.raw('select avg(salary) from employee where dept_no = e.dept_no')
.wrap('(', ') avg_sal_dept');

knex.select('e.lastname', 'e.salary', subcolumn)
.from('employee as e')
.whereRaw('dept_no = e.dept_no')

输出:
select `e`.`lastname`, `e`.`salary`, (select avg(salary) from employee where dept_no = e.dept_no)
avg_sal_dept from `employee` as `e` where dept_no = e.dept_no
</code>
Sequelizeは、生のSQLステートメントをサポートしています。これにより、開発者は複雑で高性能のSQLステートメントを作成する柔軟性を提供します。結果は、オブジェクトエンティティインスタンスにマッピングすることもできます。例は次のとおりです。

<code>import { Knex, knex } from 'knex'

interface User {
  id: number;
  age: number;
  name: string;
  active: boolean;
  departmentId: number;
}

const config: Knex.Config = {
  client: 'sqlite3',
  connection: {
    filename: './data.db',
  },
};

const knexInstance = knex(config);

try {
  const users = await knex<user>('users').select('id', 'age');
} catch (err) {
  // 错误处理
}
</user></code>
たとえの主な欠点は、開発が遅くなり、問題が積み重なって解決されないことです。幸いなことに、あるメンテナーは、ライブラリが2021年からそれに値する注目を集めると発表しました。この記事のすべてのORMライブラリプロジェクトはオープンソースであり、開発者の助けが必要であることに注意してください。

残りの部分は、入力テキストに似ています。同じ方法で擬似原産性を実行できます。 スペースの制限により、この場所は拡張されません。 画像形式は同じままであることに注意してください。

以上が9 2024年のベストJavaScriptとTypeScript ormsの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Python vs. JavaScript:開発者の比較分析Python vs. JavaScript:開発者の比較分析May 09, 2025 am 12:22 AM

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

Python vs. JavaScript:ジョブに適したツールを選択するPython vs. JavaScript:ジョブに適したツールを選択するMay 08, 2025 am 12:10 AM

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScript:それぞれの強みを理解するPythonとJavaScript:それぞれの強みを理解するMay 06, 2025 am 12:15 AM

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

JavaScriptのコア:CまたはCの上に構築されていますか?JavaScriptのコア:CまたはCの上に構築されていますか?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptアプリケーション:フロントエンドからバックエンドまでJavaScriptアプリケーション:フロントエンドからバックエンドまでMay 04, 2025 am 12:12 AM

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

Python vs. Javascript:どの言語を学ぶべきですか?Python vs. Javascript:どの言語を学ぶべきですか?May 03, 2025 am 12:10 AM

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワーク:最新のWeb開発のパワーJavaScriptフレームワーク:最新のWeb開発のパワーMay 02, 2025 am 12:04 AM

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

JavaScript、C、およびブラウザの関係JavaScript、C、およびブラウザの関係May 01, 2025 am 12:06 AM

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター