0

我正在实现一个 web 应用程序并提供一些休息 API。

以下是我的网络应用程序的结构。

服务层
服务类包含不同的 API。

它调用DAO,它是一个单例类(我宁愿说它是一个Enum并且只为Enum定义了实例)并且它没有任何状态。我的意思是 DAO 层类中没有实例变量。

DAO 层
DAO 类获取数据库连接(DB 连接是通过Enum类提供的,我在实例化 Enum时创建了连接),并在 DB 上执行相应的查询。

所以应用程序架构是这样的。

ServiceClass {
    Dao.operation()
}

DaoEnum {

    instance;

    operation() {
        DBConnectionEnum.instance.connection.preparedStmt.respective operation
    }
}

DBConnectionEnum {
    DBConnectionEnum() {
        grabDBConnection()
    }
}

我知道我必须使用connectionpool来抓取db连接,但我无法理解Dao层造成的影响,即单例。

您能否建议我这是一个正确的设计,还是会耗尽应用程序?可以进行哪些改进以使应用程序更加健壮、快速和高性能?

4

2 回答 2

0
于 2013-04-11T08:25:38.097 回答
0

我正在和我的同事讨论这个问题,根据讨论,我觉得我的单例 DAO 层一定不会给我带来任何问题。

由于 DAO 层充当 DB 和 Service 类之间的中介,并且 DAO 层不维护任何状态。因此,当同时调用 2 个类似的请求时,两个请求将在 2 个不同的线程中提供服务,并且每个线程将维护自己的 Stack。当两个请求都调用 DAO 层时,这些请求将简单地调用 DAO 层的方法,该方法将与相应线程的堆栈相关联。

因此,如果我在我的应用程序中创建 Singleton DAO 层来服务多个 Web 请求,它不会耗尽吞吐量,并且必须为客户端提供服务而不会出现任何问题。

希望我没有什么意义。:)

于 2013-04-11T10:49:03.953 回答