データベース内のテーブルごとに休止状態のアノテーションを持つPOJOクラスがあります。また、SessionFactoryを作成するデータベース用のHibernateUtilityが1つあります。
DBテーブルごとにマネージャーを作成する必要がありますか、それともDBごとにマネージャーを作成する必要がありますか?
マネージャーの下では、すべてのトランザクションを実行するクラス、CRUDを意味します。
どれが私に最高のパフォーマンスを与えますか?
通常、テーブルごとにDAOを設定すると便利です。一般的なdaoを使用できるため、多くのコードを記述する必要はありません。
パフォーマンスに関して:休止状態を使用していることを忘れないでください。休止状態は、その柱の1つとしてパフォーマンスが低下しますが、通常、休止状態は開発時間を短縮します。パフォーマンスが必要な場合は、myBatisまたは単なるjdbcを使用してみてください。
DB内のテーブルごとにDAOクラスを使用することをお勧めします。実際には、通常のCRUD操作をすべて実行する抽象DAOオブジェクトがあり、必要に応じてクエリメソッドをオーバーライドまたは追加します。すべてが1つのDAOに含まれていると、CRUDロジックを再利用できません。
実際、誰もが使用する標準の抽象CRUD実装がないことに驚いています-書くのは簡単です(おそらく、よく維持されているものがありますか?)。私のジェネリックDAOには、取得するための便利なメソッドもありEntityManagerFactory
ます。これらの種類のものが注入されていないJavaSE環境で役立ちます。
パフォーマンスは、クラスの数とは関係ありません。
DBテーブルごとのマネージャーが多すぎます。ビジネスのユースケースには通常、複数のテーブルが含まれます。
データベース全体のマネージャーが少なすぎます。アプリケーションのすべてのビジネスロジックを1つのクラスに含めることは維持できません。
アプリケーションには通常、ユーザー管理、通知管理などのユースケースのグループがあります。ロジックをクラスに分割する方法としてこれらを使用します。
また、ビジネスロジック(マネージャークラスにあると私が想定したもの)は、データアクセスロジック(DAO、リポジトリ)から分離する必要があることに注意してください。CRUDは通常DAOの責任ですが、ビジネスロジックとトランザクションの境界設定はサービス(マネージャー)レイヤーで行われます。