設計パターン Model-View-Controller (MVC) では、バックエンド データベースはモデル層の一部ですか、それともモデルから分離されていますか?
さらに、MySQL データベースは Java コードとは別に配置されているため、モデルの一部ではないと言うのは議論の余地がありますか?
設計パターン Model-View-Controller (MVC) では、バックエンド データベースはモデル層の一部ですか、それともモデルから分離されていますか?
さらに、MySQL データベースは Java コードとは別に配置されているため、モデルの一部ではないと言うのは議論の余地がありますか?
データベースは永続性であり、実際にはMVCパターンの一部ではありません(ただし、モデルの状態をデータベースに永続化するのが一般的です)。
ウィキペディアでは、モデルを「アプリケーションの状態を表すドメイン オブジェクトまたはデータ構造」と定義しています。これを念頭に置くと、データベースは厳密にはコードベースの一部ではありませんが、使用されるデータを表す (保持する) ことがわかります。したがって、(少なくともある程度)モデルの一部です。コントローラまたはビューの一部ではない理由を考えてみると、これを簡単に確認できます (どちらもモデルで動作するはずであり、単独で直接動作することは想定されていません)。
さて、@John Doe が投稿した写真のように、MVC 構造を保持するには、モデルを介してデータベースへのインターフェイスを提供する必要があることがわかります。
非常に単純化された例として、次のような記述を検討できます。
public ModelDatabaseWrapper implements ModelReadWriteInterface {
public ModelDatabaseWrapper() {
/* Prepares to use database... */
}
public Object getValue(Object someQuery) throws ModelReadException {
/* Get something from it... */
}
public void putData() throws ModelWriteException {
/* Insert something int to it... */
}
private DataBaseHandle db;
}
これは単なるガイドラインinterface
ですが、アクセス方法に基づいてモデル コンポーネントをグループ化するジェネリックを作成するポイントを強調したいと思います。実際のアプリケーションでは、単なるデータベースを超えてデータと状態を表現するさまざまな形式を持つことができるため、クリーンな API を維持することで、コントローラーとビューの柔軟性が大幅に向上します。
お役に立てば幸いです!:)