[TIL]タイプORMコンセプト
TypeORM
JavaScriptデータベースをサポートするすべてのアプリケーションで
コードオブジェクトをデータベース言語(SQL)と一致させるツール.
つまり、作成したオブジェクトに基づいてSQLを自動的に生成して同期します.
ORM
object関係マッピングの略語
オブジェクト(クラス)をテーブルシステム(RDBMS)に関連付ける.
オブジェクト向けプログラミング(java、C、javascriptなど)はクラス方式を採用
一方,リレーショナル・データベースはテーブル方式を採用している.
使用するコードの種類も異なります
この点では、オブジェクトモデルとリレーショナルモデルの間に不一致があります.
これらの不一致な相互関係に基づいてSQLを自動的に生成し、それを解決するのがORMです.
ORM開発では,オブジェクトやデートベースの修正を柔軟に扱うことができる.
オブジェクト向けプログラミングの観点から,リレーショナル・データベースの制限を受けずにオブジェクトのように表現しやすく使用できる.
長所
(*依存関係:
短所
TypeORMは次のように使用されます.
それをエクスポートし、他のts拡張子apiファイルからインポートして使用します.
entityファイルは他のtsファイルとともにapiフォルダに格納されます
もう一人
@Entity
というやつがいます.この書類も
~.entity.ts
と明示されていますEntityについて説明しましょう.
Entity
うん.エンティティ存在する
TypeORM Docsより
Entityは、データベース・テーブル(またはMongoDBを使用した場合の集合)にマッピングされるクラスです.
Entityを作成するには、新しいクラスを定義して@Entity()とマークします.
import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
firstName: string;
@Column()
lastName: string;
@Column()
isActive: boolean;
}
このように作成されたクラス1.列の内容のタイプを指定します.
2.
@Column
列で表記では、データベースの
table
のカラムが生成される原理です.このEntityのタイプはもちろん@Columnだけではありません
誰もが確認してください.
1. @PrimaryColumn()
すべてのタイプの値を含むPrimary列を作成します.
カラムタイプを指定できます.指定しない場合は、プロパティタイプから類推します.
例えばnumberであれば自動的にInt型が導出される
2.@PrimaryGeneratedColumn()
この列は自動増分値で、自動的に値が生成されます.自動インクリメンタル/シーケンス/シーケンス/アイデンティティを使用してint列を作成します(指定したデータベースと構成によって異なります).自動的に値が生成されるので、保存する前に手動で値を割り当てる必要はありません.
3.@PrimaryGeneratedColumn ( "uuid")
UIDによって自動的に生成されるデフォルト列を作成します.UIDは一意の文字列IDです.保存する前に手動で値を指定する必要はありません.値は自動的に生成されます.
4. Special columns
いくつかの特殊な熱タイプがあり、利用可能な追加機能があります.
@CreateDateColumn
は、エンティティ挿入日に自動的に設定される特殊な列です.この列は自動設定に設定する必要はありません.エンティティマネージャまたはリポジトリ内のストレージが呼び出されるたびに、
@UpdateDateColumn
はエンティティの更新時間として自動的に設定されます.同様に自動設定で、設定する必要はありません.@DeleteDateColumn
は、エンティティマネージャまたはリポジトリ内のソフト削除が呼び出されるたびに、エンティティの削除時間として自動的に設定されます.同様に、自動的に設定されているので、設定する必要はありません.@DeleteDateColumnが有効になっている場合、デフォルトのスキャンは「non-delete」です.@VersionColumn
は、エンティティーマネージャまたはリポジトリ内のストレージを呼び出すたびに、自動的にエンティティーバージョン(増分番号)に設定されます.同様に自動設定で、設定する必要はありません.の最後の部分
パフォーマンス上、これは良い選択ではありませんが、TypeORMはSQL構文による最適化もサポートしているので、優れたツールです.
個人的には、オブジェクトモデルをオブジェクトモデルから分離し、エンティティファイルを作成してデータベースに使用するツールです.これにより、構造の確認が容易になり、メンテナンスがより清潔になると思います.
また、このようにentityファイルを分離して使用する場合、graphqlと組み合わせて使用することで、本明細書のコードが長くなることを防止したり、ニワトリ(typeorm)、卵(graphql)を食べたりすることができ、このような方法を使用しない理由はないと思います
Reference
typeormを参照
ORMとは?
TypeOrmの基本概念
Reference
この問題について([TIL]タイプORMコンセプト), 我々は、より多くの情報をここで見つけました https://velog.io/@leo3179/TILTypeORM-개념テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol