1

Teacherオブジェクトがあり、TeachersがCoursesオブジェクトのリストを保持しているとします。教師のコースは変更される可能性があります。追加されるものもあれば、削除されるものもあります。データベース内のこの変更を更新するための最良のアプローチは何ですか。1.すべての変更の直後に、データベースを更新します。例:コースが追加されたら、すぐにデータベースにも追加します。2.エンティティ/オブジェクトTeacherにすべての変更が加えられたら(コースが追加され、コースが削除されます)、すべての変更でデータベースを更新します。3.その他??

私は1と2の両方の長所と短所を見ることができます。1の場合:データモデルがデータベースに直接アクセスできる場合、それがどれほど優れているかわかりません。2の場合:データモデルの情報とデータベースの情報を一度に比較する必要があるため、アルゴリズムはより複雑になります。

ありがとうございました

4

2 に答える 2

1

ご使用の言語またはプラットフォームで使用可能なORMツールのいくつかをご覧ください。データベース内のエンティティのオブジェクトの表現は、常に非同期になる可能性があります。たとえば、ユーザーが特定のプロパティを変更し、データベースの更新が試行されたが、何らかの理由でその更新が失敗した場合です。現在、これら2つのアイテムは同期されていません。

また、データベースの更新頻度によっても異なる場合があります。データベースへの書き込みに関して大規模なアクティビティが予想されない場合は、プロパティの変更時にデータベースの即時更新をトリガーすることがオプションになる場合があります。

それ以外の場合は、dirtyオブジェクトがデータベースと同期しなくなったことを示すフラグをオブジェクトに含めることができます。オブジェクトの変更は、発生したとき、またはユーザーが進行状況を保存することを決定したときなどのイベントがトリガーされたとき、または定期的に、たとえばx分ごとに更新される可能性があります。

言語とフレームワークが異なれば、これらのモデルオブジェクトの実装も異なります。Railsでは、モデルオブジェクトはActiveRecordのサブクラスであり、データベースに永続化する方法を知っています。Javaでは、ドメインオブジェクトを永続化する方法と混合することはめったにありません。これは通常、ORMフレームワークまたはカスタムDAOオブジェクトによって処理されます。

于 2010-03-06T20:30:17.607 に答える
0

Hibernateについて知りました。それはまさに私が必要としているものであり、それは簡単です。

于 2010-03-10T13:56:59.440 に答える