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