問題タブ [genericdao]
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 - Spring ジェネリック Dao クラス名
spring / hibernate プロジェクト用にカスタム汎用サービス DAO を構成しました。これは、コントローラーから簡単に再利用できるという考えです。
基本的には次のようになります。
以下によって参照されます。
ただし、String clip = e.getName()
行は Null ポインター例外をスローします。クラスを属性セクションに移動すると、これを機能させることができます (addressService.get(Address.class, 1)
ただし、特に複数の異なるクラスが呼び出されている場合は、これがやや乱雑であることがわかります.
すべての関数に値を繰り返し追加せずに、クラスに値を正しく生成させる方法はありますか?
前もって感謝します。
design-patterns - GenericDAO でファクトリ デザイン パターンを使用するには?
サードパーティの ORM (Hibernate、JPA など) を簡単に切り替えられるように、DAO レイヤーに一般的なデザイン パターンを適用したいと考えています。どうやら、次のようなすべての DAO に共通のメソッドがいくつかあります。
- public void create(T エンティティ);
- public void update(T エンティティ);
- public void delete(オブジェクト pk);
- public T read(オブジェクト pk);
- 公開リスト readAll();
すべての DAO は、これらのメソッドに加えて、DAO ごとに固有の追加のメソッドを継承する必要があります。次の設計パターンが私に適していることがわかりましたが、すべての一般的なメソッドと特殊なメソッドを同じ上に表示するためにそれを使用する方法がわかりません。 DAO リファレンス:
まず、すべての一般的なメソッドのインターフェースを作成します。
そして、そのインターフェースを実装する抽象クラスを作成します。
その後、異なる ORM をスムーズに切り替えられるようにする DAOFactory を作成します。
次に、休止状態またはその他のプラグ可能な ORM 用の DAOFactory を作成します。
各 DAO に特殊化を追加するために、各 DAO のインターフェイスを作成します。そのインターフェイスはGenericDAOINT
、ServicesDAO の各 DAO に共通のメソッドを含めるように拡張され、次のことを行います。
最後に、次のように、Hibernate に固有の ServicesDAO の具象クラスを作成します。
これらのパターンは、ORM を簡単かつ柔軟に切り替えるプロセスを容易にすると思いますが、もう一方の側面として、各 DAO の同じ参照ですべてのメソッド (Common + Specialized) を呼び出したいと考えています。次のクライアントを試しました。コード:
しかし、私は次の例外を得ました:
以前のクライアント コードのように、同じ参照ですべてのメソッド (Common + Specialized) を呼び出す方法を知りたいです。
java - getCurrentSession() 対 openSession()
generic-dao ( http://code.google.com/p/hibernate-generic-dao/ )を使用しようとしています。ただし、私の HibernateBaseDAO では、getSession() メソッドは sessionFactory.getCurrentSession() として実装されています。これにより、エンティティの更新でエラーが発生します
ただし、getCurrentSession() の代わりに openSession() を使用すると、機能します。pom.xml の依存関係として spring を使用していません。私は openSession() と getCurrentSession() を読んできましたが、なぜこれが起こっているのか理解できませんか?
spring - service-dao パターンのベスト プラクティスは何ですか?
簡単なユーザー挿入操作について考えてみましょう。この仕事をするための私のSpring関連のクラスはUserController
、、、、UserService
です。UserServiceImpl
UserDAO
UserDAOImpl
コントローラー側で呼び出しuserService.insert(new User())
、userService.insert()
メソッドで呼び出しますuserDAO.insert(user)
。このパターンでメソッドの重複があると思います。
メソッドの重複を避ける方法はありますか? 私のコーディングが間違っている可能性があります。私はあなたの返事、経験を待っています...
少し早いですがお礼を...
java - Maven、Spring、および Hibernate で不要な選択を実行する Google genericdao フレームワーク
Hibernate 4.2.11 Final、Spring 3.2.4、および Google Genericdao 1.2.0 を使用しています。
私のSpringConfig.xmlは次のとおりです。
理由とコメントの 2 つのテーブルがあります。
理由テーブルには 3 つの列があります。
- ID - シーケンスを使用して設定された PK です。
- コード - それに対して一意の制約があり、varchar フィールドです。
- 説明 - テキスト付きの varchar
コメント テーブルには 4 つの列があります。
- ID - シーケンスを使用して設定された PK です。
- ReasonCode - 理由テーブルを含む FK があります。
- 注文 - 整数 - には、それと理由コードに関する一意の制約があります。
- コメント - テキスト付きの varchar
Hibernate と Spring の両方にアノテーションを使用しています。
私の理由ドメインオブジェクトは
私のコメント ドメイン オブジェクトには次のものがあります。
また、ビジネス サービス レイヤーを作成し、そのテスト スクリプトを作成しています。ビジネス サービス層の 2 つのメソッドは次のとおりです。
それらは次のように実装されます。
私のJUNITテストは次のとおりです。
休止状態が「addFetch」によって決定された内部結合を無視し、すべての理由を個別に取得しているという問題があります。私はそれを解決しましたが、なぜこのように機能しているのかわかりません。
次の 2 つの解決策があります。
- テスト スクリプトの順序を変更します。したがって、最初に AllReasons を取得する代わりに、最初に AllComments を取得してから allReasons を取得します。この場合、内部結合が受け入れられ、理由は個別に取得されません。
- Comments ビジネス メソッドで、トランザクションの伝播を REQUIRED から REQUIRES_NEW に変更します。この場合、内部結合が受け入れられ、理由は個別に取得されません。
明らかに、問題はトランザクションの共有と取得の順序に関係していますが、その理由はわかりません。誰かが私に洞察を持っていますか?
どうもありがとう。
java - Generic Dao のデザイン パターン、Hibernate を使用しない Spring のサービス レイヤー
あまりにも多くのサイトにアクセスし、参照用にスタックオーバーフローに関する質問もしましたが、以下について正確な回答が見つかりません。
Generic DAO Pattern
を使わずにのアーキテクチャを設計したいhibernate
。
GenericSpringDAOImpl<DomainObject>
現在、 Javaファイルの開発に問題があります。なしで、またはのを使用してジェネリックメソッド(オブジェクトgetList()
を返す)を作成する方法は?DomainObject
hibernate
jdbctemplate
spring
私のコードは以下の通りです:
GenericDAO.java
GenericSpringDAOImpl.java
ここでドメイン オブジェクトは、学生、学校、教師などの任意のオブジェクトです。