問題タブ [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.
spring - GenericDao の開発に最適な Spring API
spring jpa( jpatemplate,japdaosupport spring-data-jpa ,native way entitymanager,HibernateSupport,ect ) に関する多くの実装テクニックを目にしますが、これはジェネリック DAO を開発するための最良のテクニックであり、クリーンなリソース割り当て、トランザクション管理、および高いものでなければなりませんパフォーマンス 。長所と短所は何ですか
シナリオ
- 実体 >70
- Web アプリと Web サービス
- 将来の osgi サポートと複数のデータ ソース
java - MVC のすべてのコントローラーに対して 1 つの汎用ビジネス サービス レイヤー
次のメソッドを含むサービス クラスを作成します。
Controller はメソッドの呼び出し中に任意のオブジェクトを渡すことができるため、このクラスをジェネリックにしたいと考えています。ただし、Bean ごとにプロパティが異なるという現実はありません。
spring - GenericDAO および NoSuchBeanDefinitionException: 固有の Bean がありません Spring 3.0
私はジェネリックDAOでSpring 3.0を使用しています。私はこれを持っています:
しかし、次のように注入しようとすると:
私は得る:
単一の一致する Bean が期待されていましたが、3 つ見つかりました: [genericDAOImpl, A, B]
理由がわかりません。私もそれをやってみました
そしてさえ
@Qualifier も使用してみましたが、常に同じ例外が発生します。Spring は特定のクラスではなく、常に GenericDao を探しているようです。
しかし、まだ機能していません。そして、私はその理由を理解できません。
助言がありますか?
どうもありがとうございました。
java - 一般的なDAOとネストされたプロパティのサポート
DAOオブジェクトを介してDBアクセスを実行しようとしていますが、別のエンティティのフィールドをクエリする必要がある場合に遭遇しました。
外部キーを介してエンティティAで接続されている2つのエンティティ(EntityAとEntityB)について考えますEntityA.idEntityB
。
私は持っていてGenericDao<EntityA> daoA
、EntityBの決定されたフィールドに一致するすべての結果を取得しようとしています:idEntityB.fieldOfB
すべてdaoの同じfindメソッドで。
出来ますか?もしそうなら、いくつかの方向性がいいでしょう。ありがとう
編集
私のコードの例:
エンティティ
DAOアクセス
エラーメッセージは、「プロパティidEntityB.fieldOfBを解決できませんでした」のようなものです。
編集2
自分がやりたいことのようなものを見つけることができました。私のAPIは少し異なりますが、自分のプロジェクトの初期段階でこの問題に遭遇した人にとっては、これは非常に有益だと思います。
http://code.google.com/p/hibernate-generic-dao/
フレームワークは、強力で柔軟な検索機能を備えています。これは、検索オブジェクトを一般および汎用DAOの検索メソッドに渡すことによって使用されます。
このプロジェクトでは、ネストされたプロパティを使用した検索が完全にサポートされています。
java - リフレクションを使用せずに Java で単純な汎用 DAO を作成することは可能ですか?
Java 6 (およびそれ以降) でおもちゃのデータ アクセス メカニズムを開発しています。各モデル クラスにはfindById
、指定された ID を持つ行からオブジェクトをインスタンス化する静的メソッドが必要です。以下に示すアプローチを思いつきました。私のアプローチは良い習慣と見なされますか? そうでない場合、何を改善できますか?
データベース (MySQL) ブートストラップ スクリプト:
ソースコード:
java - ジェネリック DAO は、すべての異なる DAO 実装に対してどのように同じ型を返すことができますか?
DataNucleus JDO DAO 用の汎用 DAO を作成しています。ジェネリック DAO は、取得、更新、削除、作成操作、およびその他のジェネリック操作を実行するため、これらの実装をより具体的な DAO に拡張することができます。
何らかの形でジェネリック DAO を拡張し、たとえば ID でオブジェクトを取得するときに正しい型を返すようにすることは可能ですか?
java - JDBC と接続プールを使用して DAO マネージャーを実装するにはどうすればよいですか?
私の問題は次のとおりです。Web システムでデータベース接続へのシングル ポイントとして機能するクラスが必要です。1 人のユーザーが 2 つの接続を開いているのを避けるためです。可能な限り最適化する必要があり、システム内のすべてのトランザクションを管理する必要があります。つまり、そのクラスのみが DAO をインスタンス化できる必要があります。さらに改善するには、接続プーリングも使用する必要があります。私は何をすべきか?
java - Generic DAOでHibernateを使用してストアドプロシージャを呼び出す最良の方法は何ですか?
私はMySqlを使用しており、呼び出すクエリは次のようになります:
java - SpringとHibernateのJpaRepositoryを拡張するカスタムGenericDaoインターフェースを使用してEhCacheを使用しようとしています
バックグラウンド
これが私の動作する(簡略化された)GenericDao
インターフェースであり、次のいずれかによって実装されますDomainDao
。
GenericDao.java
GenericDaoImpl.java
たとえば、ドメインFoo
とを管理するにはBar
、次のように2つのインターフェイスを作成する必要があります。
FooDao.java
BarDao.java
の@Autowired
注釈は、適切なエンティティと主キータイプを使用してSpring
自動的にインスタンス化されます。GenericDaoImpl
問題
現在、EhCacheとEhCache Spring Annotationsモデルを使用して、DAOにキャッシュプロセスを追加しようとしています。
GenericDao.java
applicationContext.xml
ehcache.xml
の使用に関する問題はGenericDao
、キャッシュが互いにDomainDao
独立してそれぞれを管理する必要があることです。たとえば、現在の構成では、を呼び出してから、を呼び出すとfooDao.findAll()
、barDao.persist(new Bar())
によって生成されたキャッシュfooDao.findAll()
がリセットされます。これは、同じキャッシュが使用されているはずですが、使用されてい<cache name="dao" />
ないためです。
トレイル
私は自分自身を実装しようとしましたCacheKeyGenerator
、それは呼び出しのタイプを考慮に入れますDomainDao
:
applicationContext.xml
DaoCacheKeyGenerator.java
DaoCacheKey.java
上記の問題DaoCacheKey
は、equals
メソッドが呼び出されない(プログラムが少なくとも壊れることはない)が、呼び出されるhashCode
ため、アルゴリズムを適用できないことです。
質問
誰かがすでにそのようなキャッシュを管理しましたか?はいの場合、どのように?私の試みは適切ですか?はいの場合、equals
メソッドを呼び出す代わりに、メソッドを呼び出す方法を教えてhashCode
ください。既存のCacheKeyGenerator
?はいの場合、どれですか?
hibernate - ジェネリック DAO パターンの実装 設計
私はGWT + Hibernateプロジェクトに取り組んでいます。これは、Company と Login の 2 つに名前を付けるさまざまなモジュールで構成されています。モジュールごとに RPC サービスを作成したので、プロジェクトが 1 つの神のようなサービスですべてを実行してしまうことはありません。
データベースと対話するために、Hibernate API を使用します。具体的には、POJO の EntityManager と Annotations です。
また、基本的な CRUD 操作を処理する Generic DAO クラスも作成しました。GenericDAO クラスも EntityManager を処理します。各モジュール サービス クラスは、独自のクエリ メソッドを追加できるように、この GenericDAO を拡張します。
以下は GenericDAO クラスのスタブです -
ここで、Company モジュールの find メソッドがもう 1 つ必要だとします。だから、私は CompanyService クラスを次のように書きます -
他のモジュールも同様の足跡をたどります。そうすれば、データ アクセス以外のメソッドを各モジュールのサービスに追加することもできます。
ここで、これらのモジュールをクライアント側で公開する必要があります。GenericDAO クラスを公開しないことにしました。そのためのインターフェースはありません。代わりに、モジュールごとにインターフェイスを作成します。
したがって、CompanyService の場合は -
他のモジュールのインターフェースも同様です。
これは良いデザインですか?GenericDAO は、セッション管理と基本的な CRUD 操作のいくつかの定型コードを節約します。ただし、Hibernate API のおかげで、メソッドあたりのコードはすでに 3 ~ 4 行に減っています。この場合、GenericDAO の他の用途は見つかりません。それとも、間違った方法で実装していますか?
このデザインが十分でない場合に備えて、これよりも良い方法を提案してください。
編集: この場合、サービス モジュールに付ける名前を知りたいです。私は今、「Impl」という接尾辞を使っていますが、喉に詰まっているように感じます。たとえば、Company モジュールの場合、Interface - CompanyService Class - CompanyServiceImpl
より良い提案?