2

私は様々なサイズのテーブルを使用するアプリケーションを作成していますが、DDDというラベルのプロジェクトでは永続性の部分を正しく取得できないため、私は物事を研究していました。私が完全に把握していない一つのことは、具体的な例を見つけることができないように見えます。私はORMを使わずに作業しています。(これは実際にはdb固有のプロジェクトであるため、ORMを使用することはできません。私は簡単にはできないでしょう)。私はstackoverflowの具体的な例を見回しましたが、実際には私の特定の問題を説明するものはありません。DDD(java)集約ルーツと永続性

私はあなたが私は明らかに任意の列を破棄し、テーブルのエンティティを取得するたびに、すでにに追加した場合、またはコレクションから削除列コレクションを設定見ての通り、以下のコードは

public DataTable getTableByID(int id) throws AccessException{ 
    DataTable result = this.context.TableContext().getEntityByID(id); 
    result.setColumns(getColumnsByTableID(id));  
    return result; 
} 

private List<DataColumn> getColumnsByTableID(int id){ 
    Object[] arguments = { id }; 
    return this.context.ColumnContext().getUnitsWhere("TABLE_ID = ?", arguments); 
} 

権利であることを疑いますテーブルはすでに記憶されていました。私はどこでどのように私は列を取得する必要があります(私はテーブルクラス内のリポジトリを呼び出すと考えてきたが、それについては何か感じていない)。永続性については、オブジェクトのリストをオブジェクトに追加するときに、オブジェクトを簡単に取得することもできますが、オブジェクトを削除すると検出方法がないこれをキャッチするためのイベントを入れることは、不正行為になります:))。正しい方向に少し押していただければ幸いです。ありがとうございます。

答えて

4

DDDは、テクノロジーに依存しない一連のガイドラインです。しかし、ドメインオブジェクトが長期間存続する(すなわち、プロセスの再開に耐えられる)プロジェクトでは、永続性問題、リレーショナルデータベースを使用する場合のORMなどのインフラストラクチャが必要です。そのような場合、ORMは必要不可欠なので、ドメインモデルは永続性に不可欠なものにする必要があります。あなたは、あなたのドメインモデルで永続的な問題が「流出」しないようにします。今問題は、既存のORMを使用するのか、独自のORMを構築するのかです。そして、あなたがそれを実現するかどうかにかかわらず、あなた自身のものを造ろうとしているように見えます。 ORMを構築することは、大きな事業であり、独自のプロジェクトです。私は、ORMとアプリケーション自体を合理的な時間内に構築することが、どれほど現実的であるかを確かめることはできません。

オブジェクト・リレーショナル・行動パターン:作業の単位(184)、アイデンティティ マップ(195)、レイジーロード(200)いずれにせよ、Martin Fowler氏は、あなたが見たいかもしれませんpatternsのセットを持っています

オブジェクト・リレーショナル構造パターン:アイデンティティフィールド(216)、外国 キーマッピング(236)、アソシエーションテーブルマッピング(248)、依存マッピング (262)、エンベディッド・バリュー(268)、直列化されたLOB(272)、単一テーブル 継承(278)、クラステーブル継承(285)、具体的なテーブル 継承(293)、継承マッパー(302)。

オブジェクトリレーショナルメタデータマッピングパターン:メタデータマッピング(306)、 クエリオブジェクト(316)、リポジトリ(322)。

具体的な問題についてはIdentity MapData Mapperをご覧ください。実装のヒントについては、Hibernateのソースを見ることもできますが、圧倒的なこともあります。

+0

あなたが言っていることはたくさんの意味があります。私はORM全体を構築するのはちょっと大したプロジェクトではないと考えていますが、それは完全にdddではないことを知っていますが、代わりに1-1のマッピングを行い、リポジトリ(明らかにリポジトリではない)をデータベースに直接マップするだけです。(基本的にちょうど栄光のDAO) – nevermore

+0

私はこのアプローチはうまくいくと思うが、それは 'ドメイン駆動型'と呼ぶのは難しいだろう、それは_data_駆動されるだろう。 – Dmitry

+0

真実、私はそれをdddと呼んでいないだろうが、もし私が自分のオルームを転がすのを止めたら、私はそれを解決するだろう。私は正直なところ、dbアクセスについて適切な方法を探していました。アクティブなレコードについて読んだことから、私たちの目的にはあまりにも制限があるようでした。私が言ったように、以前は半dddプロジェクトに取り組んできましたが、あなたのドメインをあなたの問題にモデル化する方法が好きですが、このプロジェクトではあまりにもわずかな利益のためにあまりにも多くの仕事があるようです。すべての助けをありがとう、私は本当にそれを感謝します。 – nevermore

関連する問題