我正在用Java编写一个多线程服务器,它将访问数据库并返回有关客户端请求的数据库的信息。
我的主服务器类是作为静态类编写的,当客户端连接到它时,它基本上会产生一个线程。
我的问题是在哪里放置所有数据库访问方法?它们应该位于静态主服务器类中还是应该放在服务器线程代码中?
所有答案/解释都表示赞赏!
答案 0 :(得分:1)
应保留在线程部分。因为如果在静态服务器类中使用访问方法,则为数据库交互创建的会话对象将变为线程不安全。您的数据库可能会出现不一致的情况。
建议将数据库连接部分保存在线程代码中。使用线程池是个好主意。您可以调整数据库密集型应用程序的性能。以下是oracle关于此问题的两个重要文档。
答案 1 :(得分:1)
打开和关闭数据库连接并不是最好的选择。尝试使用线程池重用线程(及其连接)。
还有一些数据库系统不能有多个(写)连接。 Sqlite就是其中之一。在这种情况下,您可以使用静态同步方法来访问数据库。