我有一个 POJO 类,其中包含数据库中每个表的休眠注释。我的数据库也有一个 HibernateUtility,它创建了 SessionFactory。
我应该为每个数据库表创建一个管理器还是为每个数据库创建一个管理器?
在经理下,我的意思是一个类,它执行所有事务,CRUD。
哪个给我最好的表现?
每个表都有一个 DAO 通常很有帮助。您不需要编写大量代码,因为您可以使用通用 dao。
性能方面:请记住,您使用的是休眠,它没有将性能作为其支柱之一,但休眠通常会缩短开发时间。如果您需要性能,请尝试使用 myBatis 或简单的 jdbc。
我更喜欢为数据库中的每个表都有一个 DAO 类。我实际上有一个抽象 DAO 对象,它执行所有常见的 CRUD 操作,然后我将根据需要覆盖或添加其他查询方法。如果它全部在一个 DAO 中,我将无法重用我的 CRUD 逻辑。
实际上,我很惊讶没有每个人都使用的标准抽象 CRUD 实现 - 编写起来很简单(也许有一个维护良好的?)。我的通用 DAO 也有方便的方法来获取EntityManagerFactory
- 在没有注入这些东西的 Java SE 环境中很有用。
性能与您拥有的课程数量无关。
每个数据库表的经理太多了:业务用例通常涉及多个表。
整个数据库的管理器太少:将应用程序的所有业务逻辑放在一个类中是不可维护的。
应用程序通常具有一组用例:用户管理、通知管理等。我将使用这些作为将逻辑拆分为类的一种方式。
另外,请注意,业务逻辑(我假设在您的管理器类中)应该与数据访问逻辑(DAO、存储库)分开。CRUD 通常由 DAO 负责,而业务逻辑和事务划分是在服务(管理器)层中完成的。