我正在实施一个Web应用程序并提供很少的其他API。
以下是我的网络应用程序的结构。
服务层
服务类包含不同的API。
它调用 DAO ,这是单例类(我宁愿说它是枚举,并且只为< strong> Enum )并且它没有任何状态。我的意思是DAO图层类中没有实例变量。
DAO图层
DAO类提取数据库连接(数据库连接是通过枚举类提供的,我在实例化枚举时创建了连接),以及它在DB上执行相应的查询。
所以应用程序架构是这样的。
ServiceClass {
Dao.operation()
}
DaoEnum {
instance;
operation() {
DBConnectionEnum.instance.connection.preparedStmt.respective operation
}
}
DBConnectionEnum {
DBConnectionEnum() {
grabDBConnection()
}
}
我知道我必须使用连接池来获取数据库连接,但是我无法理解Dao层造成的影响,这是单例。
你能否告诉我它是否是正确的设计,还是会耗尽应用程序?可以使应用程序更加健壮,快速和高效地进行哪些改进?
答案 0 :(得分:0)
答案 1 :(得分:0)
我正和我的同事讨论这个问题,根据讨论,我认为我的单身DAO层不会对我造成任何问题。
由于DAO层是DB和Service类之间的中介,DAO层不维护任何状态。因此,当同时调用2个类似的请求时,两个请求将在2个不同的线程中提供,每个线程将维护自己的堆栈。当两个请求都调用DAO层时,这些请求将只调用DAO层的方法,该方法将与相应线程的堆栈相关联。
因此,如果我在我的应用程序中创建Singleton DAO层以提供多个Web请求,则不会耗尽吞吐量,并且必须毫无问题地提供客户端。
希望我没有意义。 :)