多线程服务器数据库访问

时间:2013-05-30 01:05:38

标签: java database client-server

我正在用Java编写一个多线程服务器,它将访问数据库并返回有关客户端请求的数据库的信息。

我的主服务器类是作为静态类编写的,当客户端连接到它时,它基本上会产生一个线程。

我的问题是在哪里放置所有数据库访问方法?它们应该位于静态主服务器类中还是应该放在服务器线程代码中?

所有答案/解释都表示赞赏!

2 个答案:

答案 0 :(得分:1)

应保留在线程部分。因为如果在静态服务器类中使用访问方法,则为数据库交互创建的会话对象将变为线程不安全。您的数据库可能会出现不一致的情况。

建议将数据库连接部分保存在线程代码中。使用线程池是个好主意。您可以调整数据库密集型应用程序的性能。以下是oracle关于此问题的两个重要文档。

  1. http://docs.oracle.com/cd/E19159-01/819-3681/abehq/index.html
  2. http://docs.oracle.com/cd/E19159-01/819-3681/abehs/index.html

答案 1 :(得分:1)

打开和关闭数据库连接并不是最好的选择。尝试使用线程池重用线程(及其连接)。

还有一些数据库系统不能有多个(写)连接。 Sqlite就是其中之一。在这种情况下,您可以使用静态同步方法来访问数据库。