問題タブ [orm]
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 - @OneToMany が Hibernate の継承で機能しない理由
私がやろうとしていることはかなり明確だと思います。@ManyToOne の人が UglyProblem クラスに継承されることを期待しています。ただし、「UglyProblem クラス (mappedBy="person") にそのようなプロパティは見つかりません」というような例外が発生します。
私が見つけたのはこれだけです。この背後にある理由を説明する Emmanuel Bernard の投稿を見つけることができませんでした。
残念ながら、Hibernate のドキュメントによると、「 @MappedSuperclass としてマップされていないスーパークラスのプロパティは無視されます。」
これは、これら2つのクラスがある場合、次のことを意味すると思います。
その場合、フィールドfoo
はクラス B にマップされません。これは理にかなっています。しかし、私がこのようなものを持っている場合:
クラス UglyProblem にはフィールドがid
ありname
、両方のクラスが同じテーブルを使用してマップされることを期待しています。(実際、これはまさに起こっていることです。もう一度確認しました)。私はこのテーブルを持っています:
私の質問に戻ります:
@ManyToOne の人が UglyProblem クラスに継承されることを期待しています。
他のすべてのマップされたフィールドは継承されており、ManyToOne の関係に対してこの例外を作成する理由が見当たらないため、私はそれを期待しています。
ええ、私はそれを見ました。実際、私の場合は読み取り専用ソリューションを使用しました。しかし、私の質問は「なぜ...」でした:)。休止状態チームのメンバーによる説明があることを知っています。見つけられなかったので質問させていただきました。
このデザイン決定の動機を知りたいです。
(私がこの問題にどのように直面したかに興味がある場合:hibernate 3を使用して構築されたプロジェクトを継承しました。それはJboss 4.0.something + hibernateがすでにそこにありました(すべて一緒にダウンロードします)。私はこのプロジェクトをJboss 4.2に移動していました。 2 そして、「@OneToMany mappedBy」の継承されたマッピングがあり、古いセットアップで正常に機能することがわかりました...)
c# - ドメイン (ORM) オブジェクトからデータ転送オブジェクト (DTO) へのマッピング方法に関する提案
私が取り組んでいる現在のシステムでは、Castle Activerecord を利用して、ドメイン オブジェクトとデータベース間の ORM (オブジェクト リレーショナル マッピング) を提供しています。これはすべてうまくいき、ほとんどの場合、実際にうまく機能します。
この問題は、Castle Activerecords の非同期実行のサポート、具体的にはオブジェクトが属するセッションを管理する SessionScope で発生します。要するに、悪いことが起こります!
そのため、ドメイン オブジェクト (DB が存在することを知っていて気にする) から DTO オブジェクト (DB について何も知らず、セッション、マッピング属性などを気にしない) に簡単に変換する (自動的に考える) 方法を探しています。 ORM)。
誰でもこれを行うことについて提案がありますか。まず、オブジェクトの基本的な一対一のマッピングを探しています。ドメイン オブジェクトPersonはPersonDTOと言うようにマッピングされます。もったいないので手動でやりたくありません。
当然反省が頭に浮かびますが、このサイトに出回っているより優れた IT 知識から、「よりクールな」 提案が得られることを期待しています。
ああ、Castle ActiveRecord にマップされる前に述べたように、ORM オブジェクトである C# で作業しています。
コード例:
@ajmastrean のリクエストにより、私が (ひどく) 一緒に嘲笑した例にリンクしました。この例には、キャプチャ フォーム、キャプチャ フォームコントローラ、ドメインオブジェクト、activerecordリポジトリ、および非同期ヘルパーが含まれています。実行に必要な ActiveRecored dll を含めたため、少し大きい (3MB) です。ローカル マシンにActiveRecordAsyncというデータベースを作成するか、.config ファイルを変更する必要があります。
例の基本的な詳細:
キャプチャフォーム
キャプチャ フォームにはコントローラへの参照があります
フォームの初期化時に MyController.Load() private void InitForm () { MyController = new CompanyCaptureController(this); を呼び出します。MyController.Load(); これは LoadComplete() というメソッドに戻ります
これは、遅延ロードとして設定された Company の子リストを使用しているため、 「悪いこと」が発生する場所です。
コントローラー
コントローラーには、フォームから呼び出された Load メソッドがあり、Asyc ヘルパーを呼び出して LoadCompany メソッドを非同期的に呼び出し、Capture フォームの LoadComplete メソッドに戻ります。
LoadCompany() メソッドは、単純にリポジトリを利用して既知の会社を見つけます。
例の残りの部分は一般的なもので、基本クラスから継承する 2 つのドメイン クラス、データを挿入するためのセットアップ ファイル、およびActiveRecordMediator機能を提供するためのリポジトリがあります。
nhibernate - NHibernateでクエリを実行するためのベストプラクティス
他のテクノロジー( CSLAとSubsonic )を数年間使用した後、NHibernateを使用するようになりました。特に、Subsonicと比較した場合、クエリは少しイライラします。私は人々が他にどのようなアプローチを使用しているのか疑問に思いましたか?
Hibernateクエリ言語は私には正しく感じられません。SQLを書くのとあまりにも似ているようです。これはORMツールを使用する理由の1つであるため、使用する必要はありません。さらに、すべてXMLであるため、リファクタリングには不十分で、エラーは実行時にのみ検出されますか?
基準クエリ、十分に流動的ではないようです。
Ayendeの NHibernateQueryGeneratorは便利なツールだと読みましたが、これは人々が使用しているものですか?他に何がありますか?
編集:読む価値があります http://www.ayende.com/Blog/archive/2007/03/17/Implementing-Linq-for-NHibernate-A-How-To-Guide--Part.aspx
database - MVCC データベース設計を最も適切に処理できる ORM フレームワークはどれですか?
MVCC (Multi-Version Concurrency Control) を使用するようにデータベースを設計する場合、"IsLatest" などのブール フィールドまたは整数の "VersionId" を含むテーブルを作成し、更新は一切行わず、変更があった場合にのみ新しいレコードを挿入します。
MVCC は、詳細な履歴を必要とするアプリケーションの自動監査を提供し、更新ロックに関するデータベースへのプレッシャーも軽減します。短所は、最新バージョンを取得するために余分な句が必要なため、データ サイズが大幅に大きくなり、選択が遅くなることです。また、外部キーをより複雑にします。
( SQL Server のスナップショット分離レベルのような RDBMS でのネイティブ MVCC サポートについて話しているのではないことに注意してください)
これについては、Stack Overflow の他の投稿で説明されています。[todo - リンク]
普及しているエンティティ/ORM フレームワーク (Linq to Sql、ADO.NET EF、Hibernate など) のうち、このタイプの設計を明確にサポートできるのはどれでしょうか? これは、典型的な ActiveRecord の設計パターンに対する大きな変更であるため、データ モデルでこのルートに進むことを決定した人にとって、そこにあるツールの大部分が役立つかどうかはわかりません。MVCC をサポートするために外部キーをデータ モデル化する最良の方法さえわからないため、外部キーがどのように処理されるのかに特に関心があります。
c# - LlblGenPro でエンティティをマージする標準的な方法
主キー A1 を持つエンティティ A から始めます。子コレクション B と C がありますが、プリフェッチしていないため、それらは空です。子コレクション B と C が満たされた主キー A1 を持つ A (A プライム) の新しい出現を取得します。
A と A 素数を同じオブジェクトにし、B と C の A コレクションを埋める良い方法は何ですか?
sql - NHibernate によって生成されるパラメーター化された SQL がストアド プロシージャと同じくらい高速なのはなぜですか?
私の同僚の 1 人は、実行パスがキャッシュされていても、ORM から生成されたパラメーター化された SQL がストアド プロシージャのように高速になる方法はないと主張しています。この頑固な開発者に何か助けはありますか?
c# - ORMの優れた機能
私は現在、クライアントのさまざまなWebプロジェクトのフレームワークとして機能する非常に単純なORMツールの作成に取り組んでいます。ほとんどのプロジェクトは内部的なものであり、大量の同時実行を必要とせず、すべてがSQLServerに反します。SubSonic、NHibernate、その他の多くのオープンソースプロジェクトなどのORMツールを使用することをお勧めしますが、保守性と柔軟性の理由から、カスタムのものを作成したいと考えています。だから私の質問はこれです:このORMツールに含める必要があるいくつかの機能は何ですか?ところで、私はMyGenerationを使用してコード生成テンプレートを実行します。
orm - ドメインモデルで表現されていないクエリをどうするか?
これはどの言語にも固有のものではなく、ベスト プラクティスに関するものです。私は JPA/Hibernate を使用しています (ただし、他の ORM ソリューションでもかまいません)。この状況にどのように対処しているかを知りたいです。ドメイン クラス。その特定のクエリを表す特定のクラスを作成しますか? 他の種類のオブジェクト (配列、マップなど) でクエリを返しますか? 他の解決策はありますか? あなたの経験とベストプラクティスについて知りたいです。
PS実際には、特定のクエリに対して特定のオブジェクトを作成しています。
c# - (N) Hibernate - 複数のテーブルを 1 つのクラスに動的にマップすることは可能ですか?
GISオブジェクトに関する情報をGISオブジェクトのタイプ/クラス(道路、川、建物、海など)ごとに個別のデータベーステーブルに保存し、保存するメタデータテーブルを保持するGISソフトウェアを使用している状況がありますクラス名とその DB テーブルに関する情報。
これらの異なるクラスの GIS オブジェクトは、いくつかのパラメーター (説明と ID など) を共有します。これらの異なる GIS クラスのすべてを 1 つの共通 C# クラス (GisObject と呼びましょう) で表現したいと思います。これは、指定された GIS の GIS オブジェクトをリストするアプリケーションの非 GIS 部分から行う必要があることには十分です。クラス。
私にとっての問題は、メタテーブルから読み取られるパラメーターとしてテーブル名を受け取って使用する C# GisObject を作成するときに、NHibernate を使用してこれらのオブジェクトをマッピングして NHibernate に説明する方法です(2 つのステップで行うことができます。最初のステップでテーブル名を手動で取得し、GisObject データをプルするときにそれを NHibernate に渡します)。
この種の状況に対処した人はいますか?
python - 優れた Python ORM ソリューションは何ですか?
バックエンドでPython Webサービスと通信する、基本的にクライアント側(ブラウザ)からのJavaScriptフロントエンドであるプロジェクトにCherryPyを使用することを評価および検討しています。そのため、Python を使用して実装し、ORM (JSON からブラウザーへ) を介して PostgreSQL DB と通信できる、バックエンドに高速で軽量なものが本当に必要です。
ORMが組み込まれているので、私が気に入っているDjangoも検討しています。しかし、Django は私が本当に必要としているものより少し多すぎるかもしれません (つまり、私が本当に必要とするよりも多くの機能 == 遅い?)。
機能や機能、速度、効率などを比較対照できるさまざまな Python ORM ソリューションの経験がある人はいますか?