問題タブ [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.
c# - SQLite :memory: を NHibernate で使用する際の問題
私は自分のデータアクセスに NHibernate を使用していますが、しばらくの間、ローカル統合テストに SQLite を使用していません。私はファイルを使用してきましたが、:memory: オプションを削除すると思いました。統合テストのいずれかを起動すると、データベースが作成されたように見えますが (NHibernate はテーブル作成 SQL を吐き出します)、データベースとやり取りするとエラーが発生します。
NHibernate をインメモリ データベースで動作させた人はいますか? それは可能ですか?私が使用している接続文字列は次のとおりです。
c# - ORM を使用しない正当な理由はありますか?
見習い期間中、私はいくつかの小規模なプロジェクトにNHibernateを使用しましたが、そのほとんどは自分でコーディングおよび設計しました。さて、より大きなプロジェクトを開始する前に、データ アクセスを設計する方法と ORM レイヤーを使用するかどうかについての議論が起こりました。私はまだ見習い期間にあり、エンタープライズ プログラミングの初心者であると考えているため、オブジェクト リレーショナル マッパーをデータベースに使用すると開発が大幅に容易になるという私の意見を押し付けようとはしませんでした。開発チームの他のコーダーは私よりずっと経験が豊富なので、彼らの言うことに従うだけだと思います。:-)
ただし、NHibernate または同様のプロジェクトを使用しない主な理由のうちの 2 つを完全には理解していません。
- SQL クエリを使用して独自のデータ アクセス オブジェクトを作成し、それらのクエリを Microsoft SQL Server Management Studio からコピーするだけです。
- ORM のデバッグは難しい場合があります。
したがって、もちろん、多くの s などを使用してデータ アクセス レイヤーを構築することもできますSELECT
が、ここでは、自動結合、プロキシ クラスの遅延読み込み、およびテーブルが新しい列を取得したり、列が改名。(多数のSELECT
、INSERT
およびUPDATE
クエリの更新と、マッピング構成の更新、および場合によってはビジネス クラスと DTO のリファクタリング。)
また、NHibernate を使用すると、フレームワークをよく理解していないと、予期しない問題が発生する可能性があります。たとえば、文字列の長さを自動的に検証するように設定した Table.hbm.xml を信頼することができます。ただし、「単純な」SqlConnection クエリ ベースのデータ アクセス レイヤーにも同様のバグがあると想像できます。
最後に、上記の議論は、重要なデータベース ベースのエンタープライズ アプリケーションに ORM を使用しない正当な理由になるのでしょうか? 彼ら/私が見逃したかもしれない他の議論はおそらくありますか?
(おそらく、これはチームワークを必要とする最初の「大規模な」.NET/C# ベースのアプリケーションのようなものだと思うことを付け加えておく必要があります。単体テストや継続的インテグレーションなど、スタック オーバーフローではごく普通のことと見なされているグッド プラクティスではありません。 -現在までここに存在します。)
php - Kohana PHP、ORM、および MySQL BLOB
Kohana の ORM ライブラリを使用して、MySQL テーブルで BLOB を作成および取得しようとしています。
コードは次のようになります。
この時点で、データをファイルに出力して問題がないことを確認しました。ただし、データを取得すると、データが破損しています。これをもう少し絞り込むことができました-MySQLクエリツールを使用して、データベースに保持されているデータを抽出し、データベース内のデータが破損していることを確認できるため、問題はINSERTにあるはずです.
また、入力されたファイルが常に破損しているわけではありません - 小さなファイル (画像など) は問題ない傾向があります。
誰にもアイデアはありますか?
orm - 意見募集: ドメイン モデル内のエンティティを接続するのと切断するのとではどちらが良いですか?
新しいプロジェクトを開始しています。私はDDDのアプローチに従いたいと思っています。私たちはビジネスと話し、ドメインについてある程度の詳細な洞察を得ることができました (インターネット TV)。
チームは 5 人で分散しています。データアクセスにはリポジトリパターンを採用しています。私たちは全体的にサービスベースのアプローチに従っています。一部の操作は REST API を介して公開し、一部は独自のクライアント アプリケーションを介して公開します。
ORM の経験がない人 (私も現時点では大量に持っているわけではありません) は、エンティティ間の関係を持たないエンティティをモデル化したいと考えています。これは、リポジトリを使用する開発者が ORM がどのような影響を与えるかを正確に知る必要があるという理論的根拠があります。データベースに持っています。私が指摘したいのは、これは非常におしゃべりな一連のサービス、維持およびテストするコードの増加、そして根本的に要点を逃したドメイン モデルになるということです。私はこれが良いアプローチだとは思いませんし、私が話をした人もそうではありません。
このアプローチの実装に対する彼らの望みは、リポジトリ ファサードの下の Linq2SQL です。これには、2 番目のモデル、モデルとドメイン モデル間のマッピング クラス/レイヤー、および汎用リポジトリを作成することが (これまで見てきたように) 不可能であるように見えるため、リポジトリ内で多くの複製が必要です。また、継承を利用する L2S エンティティをマップすることもできません (つまり、すべてのエンティティには、作成者、作成者などのプロパティが必要です)。
1 番目の質問: 考えを変える方法について誰かアドバイスをもらえますか? 私は、NHibernate を使用するサイド プロジェクトを作成中です。これはもちろん DDD アプローチをサポートしていますが、これは「コードを見せてください」が強力な議論であることに基づいています。
2 番目の質問: NHibernate を使用した on-my-own-time サイド プロジェクトで、どのようなことをデモンストレーションする必要がありますか? 私はそれに慣れていません。彼らが NHibernate を嫌う理由の 1 つは、学習曲線と XML の要件です。私の反論は、これは強力なツールであり、Fluent NHibernate は XML の必要性を排除するというものです。彼らはまだそれが好きではありません。
java - O/RM システム (休止状態) の長期履歴モードを実現するためのベスト プラクティスは?
Customer、Assessment、Rating などのいくつかの Java クラスを Hibernate を使用してデータベースにマップしました。現在、永続データへのすべての変更の履歴モードについて考えています。アプリケーションは Web アプリケーションです。データを削除 (または編集) する場合、別のユーザーが変更を確認して元に戻すことができる必要があります。変更は現在のセッションの範囲外であるため、元に戻す機能に推奨されるコマンド パターンなどでこれを解決する方法がわかりません。
単一値編集の場合、この質問のようなアプローチは問題ないように思えます。しかし、永続エンティティ全体の削除はどうでしょうか? 最も簡単な方法は、この顧客が削除されたかどうかを示すフラグをテーブルに作成することです。最も複雑な方法は、削除されたエンティティが格納されるクラスごとにテーブルを作成することです。間に何かありますか?そして、これら2つのことをO / RMシステム(私の場合はHibernate)に快適に統合し、SQLをいじることなく(移植性のために避けたい)、十分な柔軟性を維持するにはどうすればよいですか?
ベストプラクティスはありますか?
.net - .NET 2.0/3.5 で使用するのに最適な無料の ORM ツール
今後のプロジェクトでオブジェクト リレーショナル マッピング パッケージを使用することに興味があります。このプロジェクトは ASP.NET アプリケーションとして開始されますが、最終的には WinForms アプリケーションと共有される多くの機能を備えています。ASP.NET と WinForms の両方の状況でうまく機能する優れた無料の ORM パッケージを提案できる人はいますか?
.net - 1000以上のテーブルを持つデータベースのORM
1000 以上のテーブルとエンティティを処理できる .NET 用の堅牢な ORM を探しています。何を提案できますか?どんなコメントでも歓迎しますが、実際にこの課題に対処した人からのコメントと、彼らがどのように対処したかについての説明は、さらに高く評価されます.
.net - Hibernate カスタム SQL オブジェクトの作成
やや単純化された状況例: 信じられないほど「重い」ドメイン オブジェクトであるエンティティ A と B があります。データベースから 1 つをロードするのはかなり大変なことです。次に、エンティティ C があります。これは、ラベル文字列 A と B を持つ非常に単純なオブジェクトで、どちらもレイジーです。
C の巨大なリストを作成するために低レベルのクエリを実行しているので、CA と CB 用に保存する必要がある ID は正確にわかっていますが、オブジェクト全体を読み込んでプロパティに設定したくありません。オーバーヘッドは非常識です。
代わりに、ID を C エンティティに直接挿入し、後で必要な場合にのみ A および B プロパティを完全にロードできるようにしたいと考えています。
<sql-insert/>
ドキュメントにタグが表示されていますが、そのセクションは本当にまばらです。
NHibernate フレームワーク内でやりたいことを実行する方法はありますか、それとも生の SQL を実行する必要がありますか? 可能であればデータベースの移植性を維持しようとしているため、生のオプションには敬遠されています。私が見逃しているより良い方法があるはずです。
java - Hibernate @Any 関連の注釈を使用するには?
@Any
Any 関連の注釈 ( 、@AnyMetaDef
、@AnyMetaDefs
および) が実際にどのように機能するかを誰かに説明してもらえますか@ManyToAny
。これらに関する有用なドキュメントを見つけるのに苦労しています (JavaDoc だけではあまり役に立ちません)。
これまでのところ、抽象クラスと拡張クラスを参照できるようになっていることがわかりました。これが事実である場合、なぜ@OneToAny
注釈がないのですか? そして、この「any」は単一の「any」または複数の「any」を指していますか?
短く、実用的で説明的な例は非常に高く評価されます (コンパイルする必要はありません)。
編集:返信を回答として受け入れ、当然のことながら信用を与えたいのと同じくらい、SminkとSakanaの両方の回答が有益であることがわかりました. 複数の返信を回答として受け入れることができないため、残念ながらどちらも回答としてマークしません。
.net - 複合主キーの ORM サポート
複合主キーは典型的な ORM コード ジェネレーターを混乱させると読んだことがあります。どの ORM が複合 PK で最もよく機能し、どれを避けるべきか? (特に .NET に興味があります)