我正在使用 Javalin 开发一个 Web 应用程序。我有多个控制器类为我处理路由。每个控制器都应该与一个 POJO/DB 表类型相关联。例如,我有一个 Employee 控制器来路由和显示与 Employee POJO 相关的页面。Employee 控制器(在后端)主要引用一个 Employee Dao 服务,然后查询数据库中的 Employee 表。到目前为止一切顺利,对吧?
我的问题是,我的一些前端页面必须包含来自其他表的详细信息,这意味着我正在我的 Employee 控制器中创建其他 DAO 服务的实例,例如,有时我需要 GroupDaoService 和 LocationDaoService 因为几个员工页面也显示组和位置信息。我想这会占用一点内存,因为每次加载不同的页面时,都会使用一组不同的 DaoService。所以我的问题是,这些 DaoServices 应该是单例吗?有一个 EmployeeDaoService 有意义吗?这些不同的 DaoServices 使用的底层数据库连接池类已经是一个 Singleton。我应该对我的 DaoServices 遵循同样的模式吗?
将我的 DaoServices 更改为 Singletons 是否有意义?
这是 EmployeeController 的一个示例部分,除了 EmployeeDao 之外,它还需要实现 3 或 4 种其他类型的 DAO,这就是引发这个问题的原因。
` public static Handler serveUserDetails = ctx -> {
List<Integer> recCounts = mainSVC.getTotalRecords();
Map<String, Object> pdata = new HashMap();
String userID = ctx.pathParam(":id");
pdata.put("numEvents", recCounts.get(0));
pdata.put("numSites", recCounts.get(1));
pdata.put("numUsers", recCounts.get(2));
pdata.put("user", userSVC.getEmployee(Integer.parseInt(userID)));
pdata.put("groups", groupSVC.getGroups());
pdata.put("schedules", schedSVC.getSchedules());
pdata.put("webuser", W_EMP);
ctx.render("/templates/userdetail.vtl", pdata);
};`