1
我想,DAO是線程安全的,不使用任何類成員。dao作爲servlet的成員 - 正常嗎?
因此,它可以作爲一個Servlet的私人領域沒有任何問題使用?我們只需要一個副本,並且多個線程可以同時訪問它,所以爲什麼還要創建一個局部變量,對不對?
我想,DAO是線程安全的,不使用任何類成員。dao作爲servlet的成員 - 正常嗎?
因此,它可以作爲一個Servlet的私人領域沒有任何問題使用?我們只需要一個副本,並且多個線程可以同時訪問它,所以爲什麼還要創建一個局部變量,對不對?
「DAO」只是數據庫抽象類的一般術語。它們是否是線程安全的取決於具體的實現。
這個不好的例子可以稱爲DAO,但如果多個線程同時調用insert方法,它會讓你陷入困境。
class MyDAO {
private Connection connection = null;
public boolean insertSomething(Something o) throws Exception {
try {
connection = getConnection()
//do insert on connection.
} finally {
if (connection != null) {
connection.close();
}
}
}
}
所以答案是:如果你的DAO處理連接和交易的權利,它應該工作。
好的,謝謝。 – EugeneP 2010-05-13 08:16:19
如果你使用的DAO是線程安全的,它可以在servlet中用作成員變量而不會有任何問題。 – 2010-05-13 08:00:09
在我看來,它是線程安全的。 DAO只包含一次注入的SessionFactory,傳遞給方法的參數不會在方法內的任何地方更改。 – EugeneP 2010-05-13 08:03:32
正如我所說,如果你100%確定你的DAO是線程安全的,你可以在Servlet中用它作爲成員變量。 – 2010-05-13 08:53:03