2

私はしばらくこれに戸惑いました。私の質問は、オブジェクト指向プログラミングとデータベース管理はどのように連携するのでしょうか? 2つがどのように連携するかについては、あまり見つけられないようです。私はデータベース駆動型のアプリケーションを作りたいと思っていました。現在、オブジェクト指向の方法論を使用してアプリケーションを作成するプロセスを含むオブジェクト指向プログラミングに関する優れた本を持っていますが、データベースを使い始めると混乱してしまいます。

クラス図は本質的にデータベース設計ですか? リレーショナル データベースと同じように、SQL を使用してデータベースにクエリを実行できますか? データ ファイルはどのように、どのような形式で保存されますか? クラスはテーブルに相当し、その属性は列に相当しますか?

事前に感謝します。回答に感謝します。グーグルと提供された同様の質問を試しました。

4

3 に答える 3

2

Object Relational Impedence Mismatchに直面しているようです。

クラス図は本質的にデータベース設計ですか?

いいえ、そうではありません。データベース モデルと OO モデルは大きく異なる可能性があります。

リレーショナル データベースと同じように、SQL を使用してデータベースにクエリを実行できますか?

はい、できますが、データをオブジェクトに変更します。その方法については、リポジトリ パターンを参照してください。

データ ファイルはどのように、どのような形式で保存されますか?

RDBS が何十年にもわたってデータを保存してきたのと同じ方法と形式で、 NoSQLシステムの人気が高まっていることを見て、話を濁すつもりはありません。

クラスはテーブルに相当し、その属性は列に相当しますか?

必ずしもそうとは限りませんが、テーブルのデータを OO 設計のオブジェクトにマッピングします。場合によっては、ほとんど直接マッピングされることがあります。たとえば、3 つのテーブルのデータを 1 つのオブジェクトにマップすることもできます。

于 2013-01-24T10:11:10.400 に答える
0

ORM(Object Relational Mapping) in Hibernateあなたの明確化のための良い例です!

次のような質問について: Is a class diagram essentially a database design? and Are classes the equivalent to tables and their attributes equivalent to columns?.. はい 例を挙げて説明しましょう:

class Department
{
     private int departmentNo;
     private int departmentName;
     private Set<Student> students;
}

class Student
{
    private int studentId;
    private int studentName;
    private Department department;
}

これらのエンティティを使用して Two database tables、休止状態で生成されます。デフォルトでは、

Department: departmentno(int),departmentname(varchar(255))
Student: studentid(int), studentname(varchar(255)),departmentno(int) [foreign key]

生成されます。

特定の学部の学生のリストは、

Department department = ......; // hibernate related thing which hit the database
Set<Student> = department.getStudents();
于 2013-01-24T10:25:46.320 に答える
0

私はこれを数年前から読んでいます。私は OOP アプローチが大好きで、データベース駆動型アプリケーションも開発しています。ここに私の発見があります:

  1. ある意味で、OOP とデータ モデルは 2 つの別個の世界です。これは、OOP が採用される何年も前から RDBMS が存在していたためです。

  2. OOP はクラスとオブジェクトに焦点を当てています。RDBMS は、データの保存と検索に重点を置いています。

  3. テーブルをモデル化するクラスの構築に時間を費やしても問題はありませんが、アプリケーションにパフォーマンスのオーバーヘッドが追加され、開発時間が長くなります。

.Net 開発者へのアドバイス: System.Data 名前空間で .Net フレームワークによって既に提供されているクラスを使用してください。これらのクラスを十分に理解していれば、コードのサイズを最小限に抑えることができます。どうしても必要な場合にのみ、少数のカスタム クラスを作成する

于 2015-06-02T15:41:15.640 に答える