9

DB が Web サービス (それらの多く) の背後に隠されているプロジェクトがあります。つまり、DB への直接アクセスは不可能です。

私は Symfony2 を使用しており、「データを保存する」オブジェクト (ユーザー、車、部屋など) とサービス (コンテナーからアクセス可能)/モデルがある場合は、より重いロジックが関係する場合 (たとえば、エンティティを使用するように強制しています) TransactionMaker、RoomBooker、CarDestroyer など)。

ORM 記述のないエンティティが配列よりも選択されました。これは、フレームワークが非常に簡単な方法で検証し、フォームを構築し、IDE インテリセンスを提供するためです。

現在は問題なく動作していますが、一部の開発者は、エンティティは常に DB のテーブルを反映する必要があると主張しています。本当?

4

1 に答える 1

10

エンティティは、そうするように構成されている場合にのみデータベース テーブルにマップされます。

データを保持する基本クラスを意味する「エンティティ」と呼ばれることが多いクラスは単純で、アプリケーションで製品を必要とするというビジネス要件を満たすのに役立ちます。http://symfony.com/doc/current/book/doctrine.html#creating-an-entity-class

単純な配列を使用するよりも、より正式な方法でデータをモデル化することをお勧めします。これが、配列が存在する理由です。

おそらく、データをデータベースにマップするために最も一般的に使用されますが、これは必須ではありません。それらは、意味のある方法でアプリケーションの情報をモデル化するデータ コンテナーであるという目的を果たします。(つまり、USER ENTITY で USER をモデル化するため)

エンティティの永続化にデータベースを使用していない場合は、データベースを使用してデータをやり取りしたり、フォームを作成したり、検証サービスやセキュリティなどを使用したりできます。Symfony アプリから Web サービスの情報へのアクセスを許可するサービスを作成して、次のようなものを作成することも良い考えです。

$user = $this->get('some_persistance_service_you_write')->find($id,'user');
$user->setName('new value');
$err = $this->get('validator')->validate($user);
//....
$this->get('some_persistance_service_you_write')->persist($user);

もちろん、これは話題から外れていますが、データベースにアクセスせずにエンティティを使用する方法の例です。

于 2013-01-22T20:46:06.517 に答える