問題タブ [dao]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java EE - DAO DVO
DAO-DVO 設計を実装する 2 つの方法を見てきました。
1) DVO はオブジェクトであり、DAO はファクトリを使用してインスタンス化されます。つまり、DAO もオブジェクトです。2) DVO もオブジェクトですが、この場合、DAO はタスクを実行するために DVO を受け入れる静的メソッドのみを含むクラスです。
どちらの方法がより優れており、よりスケーラブルか疑問に思っていました。
sql-server - VB6 / Microsoft Access / DAO to VB.NET/SQL Server ...アドバイスがありますか?
VB6 / AccessのDAOレコードセットに、データの追加、データのクリーンアップ、データの移動、朝の服装をして学校に持っていくなど、何でもできるようにすることができます。しかし、.NETのどこから始めればよいのかさえわかりません。
データベースからデータを取得するのに問題はありませんが、データを編集して元に戻す必要がある場合、実際の人は何をしますか?
.NETおよびSQLServerの関連テーブルにデータを編集、更新、および追加するための最も簡単で直接的な方法は何ですか?
ado - ADO を使用した結合テーブルの行の削除
別のフォーラムでこの質問を見たことがありますが、受け入れられる回答がありませんでした。
Groups テーブルと Elements テーブルの 2 つのテーブルがあるとします。テーブルには定義済みの関係がありません。Elements テーブルには、Groups テーブルの IdGroup (PK) フィールドを参照する IdGroup フィールドがあります。
ADO レコードセットを介して次のクエリを使用して、テーブルの値をデータグリッドに入力します。
そのグリッドから、要素を削除するために Delete キーを押したいと思います。これが私の問題です。DAO を使用したとき、DAO の Delete() 関数は Elements グループのレコードのみを削除しました。これは予期された動作でした。
ADO に変更すると、Delete() 関数によって、要素レコードと要素が属するグループの両方のテーブルのレコードが削除されました。
テーブルにリレーションシップを定義せずに、ADO で DAO の動作を再現する方法はありますか?
注: 代替手段があることは知っています (DELETE クエリを実行すると、うまくいく可能性があります)。ADO でこれを行う方法を教えてください。または、できないと言ってください。
prototype - 通常、DAO が持つべきスコープ
dao が状態を保持しないことは論外です。
しかし、クラスに最も簡単にアクセスするには、prototype(=new every time) と singleton のどちらを使用する方がよいでしょうか?
単純なオブジェクトの作成はdaoにとって安価です..通常、sessionfactoryのみを保持し、シングルトンのリストからオブジェクトにアクセスすると、同様に高価になる場合があります.
明確化: この質問の焦点は、daos の範囲設定に共通の規則があるかどうかです。
database - n 層にリファクタリングする
私は、DAO を使用する独学の vb6 プログラマーです。以下は、私が作成できる典型的なコードの例です。
上記は CRUD アプリケーションのソース コード全体であると想定してください。このデザインが悪いことはわかっています。すべてがごちゃ混ぜになっています。理想的には、ユーザー インターフェイス、ビジネス ロジック、およびデータ アクセスという 3 つの異なるレイヤーが必要です。これが望ましい理由はなんとなくわかりますが、それがどのように行われるのかはわかりません。そのため、そのような分離が良い理由を完全には理解していないのではないかと思います. 誰かが上記のばかばかしいほど些細な例を 3 層にリファクタリングできれば、私はずっと先のことになると思います。
nhibernate - データ層で複数のデータ プロバイダーにアクセスする
私は、DDD の哲学を使用して開発されているビジネス アプリケーションに取り組んでいます。データベースは NHibernate を介してアクセスされ、データ層は DAO パターンを使用して実装されます。
UML クラス図を以下に示します。
UML クラス図 http://img266.imageshack.us/my.php?image=classdiagramhk0.png http://img266.imageshack.us/my.php?image=classdiagramhk0.png
デザインの良し悪しはわかりません。どう思いますか?
でも問題はデザインの良し悪しではありません。問題は、アプリケーションを起動した後IDaoFactory
、プレゼンテーション層でインスタンス化され、以下のように (MVC パターンを使用して設計された) プレゼンター クラスにパラメーターとして送信されます。
1 つのデータ プロバイダー (1 つのデータベース) だけを使用するのは簡単でした。しかし、XML からもデータを取得する必要があります。そして、開発の次の段階では、さまざまな Web サービスに接続し、受信データと送信データを操作する必要があります。
XML からのデータは、列挙型であるキーを使用して取得されます。という名前のクラスXMLLoader
をデータ層に追加し、インターフェイスILoader
をドメインに追加します。XMLLoader
署名が
以下のように、プレゼンテーション層で XMLLoader を使用して ILoader をインスタンス化する場合、データ層から XML データを取得するオブジェクトにそれを送信する必要があります。
Web サービス アクセス クラスの実装後
パラメータは時間の経過とともに大きくなります。クラス内のデータ アクセス オブジェクトのすべてのインスタンスを保持し、必要なプレゼンターに渡すことができると思います (シングルトン パターンも役立つ場合があります)。ドメイン層には、次のようなクラスが必要です。
メイン クラスでは、次のようにこの設計でインスタンス化を行うことができます。
このデザインについてどう思いますか、それとも別のデザインを提案してもらえますか?
回答者の皆様ありがとうございます...
java - Advanced Java Generics の質問: なぜ冗長な情報を指定する必要があるのか
次のようなJPAモデルPOJOのジェネリッククラスがあります。
このコードはコンパイルされません。これが機能するには、指定する必要があります
しかし、それは冗長な情報です!! T が Identifiable を拡張するという事実は、PK タイプが Identifiable インスタンスに指定され、これが DAO の PK に使用するタイプであることを意味します。
冗長な情報なしでこれを機能させるにはどうすればよいですか?
ありがとう、フレッド
編集:簡略化された例
.net - .NET2.0で最高のデータアクセス方法
.NET 3.5で開発するとき、私は当然、データアクセスにLINQを使用します。
しかし、.NET 2.0プロジェクトの場合、どのデータアクセスモデルを使用するのが最適ですか?私は主にTableAdaptersを使用する傾向がありますが、状況によっては独自のSQLを作成することもあります。
c# - シンプルなマッパーパターンC#コード生成テンプレート
SQLストアドプロシージャとうまく連携する適切なC#マッパーパターンコード生成テンプレートを推奨できる人はいますか?エンティティオブジェクトを介してデータベースとの間でデータを転送するための静的マッパークラスを備えた、 POCOスタイルのエンティティオブジェクトを生成するものを探しています。
NHibernateがPOCOスタイルのエンティティオブジェクトを生成できることを理解しています。ただし、SQLストアドプロシージャ(このプロジェクトの要件)に強く依存している場合、NHibernateはその魅力を失います。
CRUDストアドプロシージャも生成するテンプレートを推奨できる場合は、ボーナスポイントが付与されます。;-)
編集:この特定のプロジェクトでは、Active Recordパターンコードを生成するテンプレート(Subsonic、Linq to SQL、Entity Frameworkなど)にはまったく興味がありません。
java - Hibernate での列挙
値が Java 列挙から取得される DAO にフィールドがあると便利なことがよくあります。典型的な例はログイン DAO で、通常はユーザーを「NORMAL」または「ADMIN」として特徴付けるフィールドがあります。Hibernate では、次の 2 つのオブジェクトを使用して、この関係を (半) タイプセーフな方法で表現します。
これは機能しますが、UserType クラスは見苦しく、いくつかの値を格納するためだけに多くの官僚主義が必要であることがわかりました。理想的には、Hibernate は enum フィールドを直接サポートし、列挙値を格納する追加のテーブルを作成する必要があります。
私の質問は: Hibernate で列挙型クラスを直接マップする方法はありますか? そうでない場合、列挙を表すための私のパターンは十分ですか、それとも何か不足していますか? 人々は他にどのようなパターンを使用しますか?