タグ付けされた質問 「orm」

オブジェクトリレーショナルマッピング(ORM)は、オブジェクト指向システムをリレーショナルデータベースにマッピングするための手法です。他のタグを使用して、プログラミング言語([java]、[sql]、[python])、データベースシステム([postgreSQL]、コンテンツ管理システム([django])、フレームワーク([flask]、[spring]、[laravel]を示す])、アプリケーション環境([android]、[node.js])、および検索に使用でき、ウォッチャーを持つその他のタグ。


11
Hibernate vs JPA vs JDO-それぞれの長所と短所?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前休業。 この質問を改善する 私はORMをコンセプトとして使い慣れており、数年前に.NETプロジェクトでnHibernateを使用したことさえあります。ただし、JavaでのORMのトピックに追いついておらず、これらのツールを使用する機会もありませんでした。 しかし、今では、一連のレガシーWebサービスから離れようとして、アプリケーションの1つにいくつかのORMツールを使い始める機会があるかもしれません。 JPA仕様、Hibernateライブラリ自体で得られるもの、JDOが提供するものの違いを説明するのに苦労しています。 だから、私はこの質問が少々自由回答であることを理解していますが、私はいくつかの意見を得ることを望んでいました: それぞれの長所と短所は何ですか? 新しいプロジェクトにはどれを提案しますか? 一方のフレームワークと他方のフレームワークを使用することが理にかなっている特定の条件はありますか?
174 java  hibernate  orm  jpa  jdo 

19
Doctrine-準備されたステートメントだけでなく、実際のSQLを出力する方法は?
PHP ORMであるDoctrineを使用しています。私はこのようなクエリを作成しています: $q = Doctrine_Query::create()->select('id')->from('MyTable'); 次に、関数に、次のようにさまざまなwhere句や必要なものを追加します $q->where('normalisedname = ? OR name = ?', array($string, $originalString)); 後で、execute()そのクエリオブジェクトを実行する前に、生のSQLを印刷して調べて、これを実行します。 $q->getSQLQuery(); ただし、これは準備されたステートメントのみを出力し、完全なクエリは出力しません。MySQLに何が送信されているのかを確認したいのですが、代わりにを含む準備済みステートメントを出力してい?ます。「完全」クエリを確認する方法はありますか?

12
JPAでList <String>型のプロパティを永続化する方法は?
リスト型のフィールドが永続化されているエンティティを取得する最もスマートな方法は何ですか? Command.java package persistlistofstring; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.EntityManager; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Persistence; @Entity public class Command implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) Long id; @Basic List&lt;String&gt; arguments = new ArrayList&lt;String&gt;(); public static void main(String[] args) { Command …
158 java  orm  jpa 

5
ORMとODMの違いは何ですか?
ORM(ODM(Object Document Mapper)がドキュメントを扱う)の概念を理解している限り、ORM(ODM(Object Relational Mapper))がデータ間の関係をマッピングする限り、ORMとODMの違いを理解しようとしています。mySQLはORMの例であり、MongoDBはODMの例であると私は思いますか? 私はあなたが見ることができると確信しているように、私は概念の理論にあまり詳しくありません。誰かが2つの違いを明確にしてくれませんか?
157 database  orm  odm 

14
いつ、なぜJPAエンティティはSerializableインターフェースを実装する必要がありますか?
質問はタイトルにあります。以下では、私の考えと調査結果のいくつかを説明しました。 私が非常に単純なドメインモデル(リレーションなしの3つのテーブル)を持っている場合、すべてのエンティティがSerializableを実装していませんでした。 しかし、ドメインモデルがより複雑になると、RuntimeExceptionが発生し、私のエンティティの1つがSerializableを実装していないと言われました。 JPA実装としてHibernateを使用しています。 私は疑問に思う: ベンダー固有の要件/動作ですか? シリアル化可能なエンティティはどうなりますか?保存または転送のためにシリアライズ可能にする必要がありますか? エンティティをシリアル化できるようにする必要があるのはいつですか。


6
LINQ To EntitiesはメソッドLastを認識しません。本当に?
このクエリでは: public static IEnumerable&lt;IServerOnlineCharacter&gt; GetUpdated() { var context = DataContext.GetDataContext(); return context.ServerOnlineCharacters .OrderBy(p =&gt; p.ServerStatus.ServerDateTime) .GroupBy(p =&gt; p.RawName) .Select(p =&gt; p.Last()); } これを機能させるには、これに切り替える必要がありました。 public static IEnumerable&lt;IServerOnlineCharacter&gt; GetUpdated() { var context = DataContext.GetDataContext(); return context.ServerOnlineCharacters .OrderByDescending(p =&gt; p.ServerStatus.ServerDateTime) .GroupBy(p =&gt; p.RawName) .Select(p =&gt; p.FirstOrDefault()); } p.First()最初のクエリをミラーリングするためにを使用することさえできませんでした。 なぜこのような堅牢なORMシステムに基本的な制限があるのですか?
144 c#  entity-framework  orm 

3
JPAとSpring Data JPAの違いは何ですか?
Spring Data-JPAとJPAの違いについて少し混乱しています。JPAについては、人気のORMテクノロジーを使用してJavaオブジェクトをリレーショナルデータベースに永続化するための仕様であることを知っています。 言い換えれば、JPAはインターフェースやその他のORMテクノロジーを提供し、JPAプロバイダー(Hibernateなど)として知られるインターフェースを実装します。 さて、Spring Data JPAとは正確には何ですか? Spring Data JPAはJPAを介していくつかの機能(インターフェース)を追加しましたが、それでも指定されているだけですか、それともJPAプロバイダーでもありますか? Spring Data JPAがリポジトリー(DAOレイヤー:私が間違っていない場合)を回避するのを見ました。つまり、「Spring Data JPA + Hibernate」を使用する場合と「Hibernate」指示のみを使用する場合とではどのように違うのでしょうか。

1
このDjangoアプリチュートリアルのchoice_setとは何ですか?
Djangoチュートリアルの最初のDjangoアプリの作成、パート1にこの行があります。 p.choice_set.create(choice='Not much', votes=0) どのようにchoice_set呼ばれ、それは何ですか? choiceパーツはChoiceチュートリアルで使用したモデルの小文字バージョンだと思いますが、何choice_setですか?詳しく説明できますか? 更新:ベンの答えに基づいて、私はこのドキュメントを見つけました。
144 python  django  orm 

8
1対多、多対1、多対多の違いは?
わかりましたので、これはささいな質問かもしれませんが、違いを視覚化して理解し、それぞれをいつ使用するか理解できません。また、単方向マッピングや双方向マッピングなどの概念が1対多/多対多の関係にどのように影響するかについても、少し不明確です。私は現在Hibernateを使用しているので、ORM関連の説明があれば役に立ちます。 例として、次の設定があるとします。 public class Person{ private Long personId; private Set&lt;Skill&gt; skills; //Getters and setters } public class Skill{ private Long skillId; private String skillName; //Getters and setters } したがって、この場合、どのようなマッピングが必要になりますか?この特定の例に対する回答は間違いなく高く評価されていますが、1対多と多対多のどちらを使用するか、結合テーブルと結合列を使用する場合と単方向と双方向を使用する場合の概要についても教えてください。

2
エンティティフレームワーク.Remove()と.DeleteObject()
次の2つの方法を使用すると、EFを使用してデータベースからアイテムを削除できます。 EntityCollection.Removeメソッド ObjectContext.DeleteObjectメソッド 1つ目はにEntityCollectionあり、2つ目はにありObjectContextます。 それぞれいつ使用する必要がありますか? 一方が他方よりも好まれますか? Remove()を返し、boolをDeleteObject()返しますvoid。

30
なぜエンティティオブジェクトが必要なのですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 この質問を改善する 現在受け入れられているエンタープライズアプリケーション設計パラダイムのメリットについて、正直で思慮深い議論が必要です。 エンティティオブジェクトが存在する必要があるとは思いません。 エンティティオブジェクトとは、「個人」、「アカウント」、「注文」など、アプリケーションのために構築する傾向がある典型的なものを意味します。 私の現在の設計哲学はこれです: すべてのデータベースアクセスは、ストアドプロシージャを介して実行する必要があります。 データが必要なときはいつでも、ストアドプロシージャを呼び出して、SqlDataReaderまたはDataTableの行を反復処理します (注:Java EEを使用してエンタープライズアプリケーションも構築しました。Javaの人は、.NETの例を同等のものに置き換えてください) 私は反OOではありません。エンティティではなく、さまざまな目的で多くのクラスを作成します。私が書くクラスの大部分は静的ヘルパークラスであることを認めます。 私はおもちゃを作っていません。複数のマシンに展開された大規模で大量のトランザクションアプリケーションについて話している。Webアプリケーション、Windowsサービス、Webサービス、b2bインタラクション、という名前を付けます。 ORマッパーを使用しました。いくつか書いた。私はJava EEスタック、CSLA、および他のいくつかの同等のものを使用しました。私はそれらを使用しただけでなく、本番環境でこれらのアプリケーションを積極的に開発および保守しました。 私は、エンティティオブジェクトは、私たちの邪魔になっていることを戦いテストされたという結論になってきた、と私たちの生活は次のようになりますので、それらなしではるかに簡単。 この単純な例を考えてみましょう。正しく機能していないアプリケーションの特定のページに関するサポートコールがあり、フィールドの1つが本来のように永続化されていない可能性があります。私のモデルでは、問題を見つけるために割り当てられた開発者がちょうど3つのファイルを開きます。ASPX、ASPX.CS、およびストアドプロシージャを含むSQLファイル。この問題は、ストアード・プロシージャー呼び出しのパラメーターが欠落している可能性があるため、解決に数分かかります。しかし、どのエンティティモデルでも、必ずデバッガを起動し、コードをステップ実行し始めると、Visual Studioで15〜20個のファイルが開かれることになります。スタックの一番下に降りるまでに、開始した場所を忘れてしまいました。頭の中にあるのは、一度に多くの物だけです。ソフトウェアは、不要なレイヤーを追加することなく、非常に複雑です。 開発の複雑さとトラブルシューティングは、私の不満の片側にすぎません。 次に、スケーラビリティについて話しましょう。 開発者は、データベースと対話するコードを作成または変更するたびに、データベースへの正確な影響を徹底的に分析する必要があることを理解していますか?開発コピーだけでなく、本番を模倣しているので、オブジェクトに必要な追加の列が現在のクエリプランを無効にし、1秒で実行されていたレポートが2分で完了していることがわかります。選択リストに単一の列を追加したためですか?そして、現在必要なインデックスが非常に大きいため、DBAがファイルの物理レイアウトを変更する必要があることがわかりました。 抽象化によって物理データストアから離れすぎてしまうと、拡張が必要な​​アプリケーションで大混乱が発生します。 私は熱狂的ではありません。Linq to Sql、ADO.NET EF、Hibernate、Java EEなどへの強いプッシュがあるので、私が間違っていると私は確信している可能性があります。それが何であるか、なぜ私は自分の考えを変える必要があるのか​​を本当に知りたいのです。 [編集] この質問が再び突然アクティブになったようです。新しいコメント機能が追加されたので、いくつかの回答に直接コメントしました。お返事ありがとうございます。これは健全な議論だと思います。 おそらく、私がエンタープライズアプリケーションについて話していることをもっと明確にすべきでした。たとえば、誰かのデスクトップやモバイルアプリで実行されているゲームについてはコメントできません。 いくつかの同様の答えに対応して私がここで一番上に置かなければならないことの1つは、エンティティ/ ORMに移行する理由として、直交性と懸念の分離がよく引用されます。ストアドプロシージャは、私が考えることができる懸念の分離の最良の例です。ストアドプロシージャ以外のデータベースへのアクセスをすべて許可しない場合は、理論的にはデータモデル全体を再設計し、ストアドプロシージャの入力と出力を維持している限り、コードを壊さないようにすることができます。これらは契約によるプログラミングの完璧な例です( "select *"を避けて結果セットを文書化する限り)。 業界に長く住んでいて、長命のアプリケーションを扱ってきた人に聞いてください。データベースが存続している間に、アプリケーションとUIのレイヤーがいくつ消えてしまったのでしょうか。データを取得するためにSQLを生成する4つまたは5つの異なる永続化レイヤーがある場合、データベースのチューニングとリファクタリングはどれほど難しいですか?何も変更できません!ORMまたはSQLを生成するコードは、データベースを完全にロックします。
139 sql  database  orm  entities 

4
単一のクエリセットでデータベースレコードを選択して更新する
2つのクエリを実行するのではなく、同じようにupdateand selectステートメントを実行するにはどうすればよいですかqueryset。1つはオブジェクトを選択するためのもので、もう1つはオブジェクトを更新するためのものです。 SQLでこれに相当するものは次のようになります。 update my_table set field_1 = 'some value' where pk_field = some_value

18
laravel eloquentで特定の列を選択する方法
テーブルに7つの列があり、そのうちの2つだけを選択したいとします。 SELECT `name`,`surname` FROM `table` WHERE `id` = '1'; laravel eloquentモデルでは、次のようになります Table::where('id', 1)-&gt;get(); しかし、この式ではidが1に等しいすべての列が選択されると思います。2つの列(name、surname)だけが必要です。2つの列のみを選択する方法

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.