他のフレームワークのクラス、列挙型などを使用するのは悪いことですか? JPAに基づくリポジトリにいくつかのファインダーメソッドがあり、フェッチタイプ(オブジェクトを遅延ロードするか熱心にロードするか)とFetchType
JPAフレームワークの列挙型を目的に合わせて渡したいです。しかし、独自の列挙型/クラスを作成する方が良いでしょうか? アプリとフレームワークが結合されることは理解していますが、アプリはすでに JPA を使用しています。
4 に答える
あなた自身の質問に答えたようです。
...
FetchType
JPAフレームワークの列挙型は目的に適しています。
JPA がすでにアプリケーションの依存関係にあり、それらの型がユース ケースに適している場合、JPA 型の使用を避けるために車輪を再発明する必要はありません。
PS Gamb は、型の使用を永続化レイヤーに制限することを提案したとき、彼の答えで非常に良い点を指摘しています。
確かに、FetchType
列挙型を使用できますが、それをどこで使用しているかを検討してください。階層化された設計がある場合は、Persistence レイヤー以外のレイヤーでその列挙型を使用しないでください。そうしないと、上位レイヤーの JPA から参照をインポートする必要があります (必要な場合)。
EAGER
別のアプローチ (としかないため) は、フィールドを取得する必要があるかどうかを定義し、その条件にフラグなどの値LAZY
を割り当てることです。boolean
lazyLoad
robjb がすでに述べたように、一からやり直す必要はありません。これがフレームワークの全体的な目的です。開発者にツールとヘルパーを提供して、標準的なタスクを簡素化します。したがって、Framework-Classes を使用することをお勧めします。そして、それらがニーズに100%一致しない場合は、いつでもニーズに合わせて拡張できます-繰り返しますが、欠けているのが小さなネジだけである場合、ホイール全体を再発明する理由はありません:-P
既にフレームワークを使用している場合でも、可能な限り、ロジックの上位層を解放したままにします。理由:
誰かがあなたのコードを読んで、あなたがフレームワークからクラスを使用しているのを見ると、それがあなたのフレームワークとの通信に使用されていると想定します(わかりました、それは弱いです)。
変更したい場合は、フレームワークのクラスのみを使用して対話する方が簡単です。
ただし、これは石で書かれたものではありません。自分でクラスを開発するのは時間のかかる投資である場合は、エンジンを変更したくない人がいないことを願って、それを選択することができます。