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

5
実装に依存しないことは本当に価値がありますか?
現在、Tomcat、Spring 4、Spring Security、MySQL、およびJPA w / Hibernateを使用して取り組んでいるプロジェクトがあります。 私は、ORMプロバイダーの基盤となる実装をシームレスに、または少なくとも痛みを軽減するために、JPAを選択しました。これは、実装(JAX-RS)よりも仕様を精神的に使用しているということは、Java開発コミュニティのデフォルトの観点であると言えます。 これが本当にやりがいのある仕事であるかどうか興味があります。Hibernateを直接使用した場合、メインのJPA仕様の一部ではない機能を使用できるため、ある程度のパワーが得られると確信しています。 私の懸念の一部は、YAGNIのアイデアから来ています。私は本質的に特定のスタイルと方法でプログラミングしているため(Hibernateの代わりにJPAを使用)、将来のある時点でORM実装を交換できます。私は製品の寿命にわたってこれが起こることをひどく疑っているので、私は本質的に私はおそらく恩恵を決して享受しないものに努力しています。 あなたの考えは何ですか?JPAのようなものになると、「インターフェースへのプログラミング」は価値がありますか?実際に製品のORM実装全体を交換したことはありますか?とにかくJPAリークのようなものからの抽象化を完全に回避できたことがありますか?個人的には既にデータベーステーブルをクリーンアップするために単一のネイティブSQL呼び出しがあり、JPA仕様に組み込まれているもの(メソッドのプレフィックスの取得/設定、およびMEMBER OFの違い) / IN。これは、基礎となる実装に自分自身をバインドするだけで、回避する機会を与えてくれます。

4
単体テストとTDDを使用して、主にデータベースCRUD操作に依存するアプリをテストするにはどうすればよいですか?
仕事中、私のプロジェクトの1つは主に外部クライアントから渡されたデータを取得し、データベースに保持することです。JPAを使用するJavaエンタープライズアプリであり、ほとんどのロジックはCRUD操作を中心に展開します。 バグの大部分は、何らかの形でJPAに関係しています。 例1:[保存]ボタンを2回クリックすると、JPAは同じエンティティをデータベースに2回挿入しようとし、主キー違反が発生する場合があります。 例2:データベースからエンティティを取得し、編集して、そのデータを更新しようとします。JPAは、古いインスタンスを更新する代わりに、新しいインスタンスを作成しようとする場合があります。 多くの場合、ソリューションはJPAアノテーションを追加/削除/変更する必要があります。また、DAOロジックの変更に関係する場合もあります。 単体テストとTDDを使用してコードに自信を持たせる方法がわかりません。ユニットテストとTDDの適合性が悪いのか、問題に近づいているのかがわかりません。 単体テストは、実行時にしかこれらの問題を発見できず、問題を再現するためにアプリサーバーに展開する必要があるため、不適切なように見えます。通常、データベースは関与する必要がありますが、これは単体テストの定義の外側にあると考えられます。これらは統合テストです。 TDDは、展開とテストのフィードバックループが非常に遅いため、非常に非生産的であるため、不適切なように思われます。deploy + testフィードバックループには3分以上かかります。これは、作成中のコードに関するテストを具体的に実行した場合にのみ発生します。すべての統合テストを実行するには、30分以上かかります。 この型の外側にはコードがあり、できる限りいつでも単体テストを行っています。しかし、バグの大部分と最大のタイムシンクは、常にJPAまたはデータベースに関係しています。 同様の別の質問がありますが、アドバイスに従えば、コードの最も不安定な部分(JPA)をラップし、それ以外のすべてをテストします。私の質問の文脈では、私は同じ悪い状況にいるでしょう。JPAをラップした後の次のステップは何ですか?IMOその質問は(おそらく)私の質問に答えるためのステップですが、それに対する答えではありません。
22 java  unit-testing  tdd  jpa 

2
エンティティからDTOへの使用
基本的な階層型Webアプリケーションのフローを考え出そうとしており、競合する情報をオンラインで読んでいます。私が理解しようとしているのは、何らかのマッパーを使用して、DAOからサービスレイヤーへのDTOオブジェクトを引き続き使用する利点があるかどうかです。 私が予見する基本的な流れは次のとおりです。 UIモデル/フォーム->コントローラー コントローラーはモデルをドメインオブジェクト(エンティティ)に変換します ドメインオブジェクト->サービスレイヤー ドメインオブジェクト-> DAO DAO->ドメインオブジェクト サービス-> UI UIはドメインをUIモデルに変換します DTOに従った場合、DAOはエンティティではなくDTOを返します。(少なくともJavaでは)エンティティがアノテーション付きのPOJOになったため、DTOがわずかに機能しなくなったようです。つまり、メモリフットプリントが非常に小さくなっています。 これは事実ですか、それともDTOを使用してドメインオブジェクトをDAOレイヤー内に完全にカプセル化する必要がありますか?また、この場合、サービスレイヤーはDAOに何を渡しますか? 本当にありがとう!
15 java  entity  jpa 

1
IntelliJとMavenコンパイル
Hibernate jarを必要とするプロジェクトがあります。 それらをpom.xmlの依存関係として追加すると、Mavenはプロジェクトを適切にコンパイルします。 ただし、IDEでは、Hibernate APIへのすべての注釈と呼び出しが未解決(赤)としてマークされます。 IntelliJでそれらを解決できるようにするにはどうすればよいですか? Build ProjectをクリックしたときにMavenを使用する方法はありますか?(Ctrl + F9) また、IntelliJ内のファセットの概念と混同しています。それらが必要ですか、永続化アシスタントを有効にするJPAファセットなどとしましょう...またはMavenに処理を任せるオプションがありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.