我有一个需要数据库后端的Web应用程序 我的后端非常小(最多4个表)并且SQL操作不是那么多 所以我认为一些强大的ORM解决方案就像用一个悍马击中一个moschito,我只是做一个小的DAO模式,以便代码更干净(而不是直接使用sql命令击中db)。
到目前为止它的确有效,但我不确定我是否在不知情的情况下陷入了一个陷阱 我使用Tomcat的连接池,我希望并发访问数据库。
我的问题与并发性和java sql对象的使用有关。
示例:
我执行以下操作:
这是正确/安全吗?
我也可以以可重入的方式重用相同的连接吗? 我认为通过多个线程使用它没问题吗?
一般来说,欢迎任何提示/指南进入正确的轨道
答案 0 :(得分:1)
关于连接,只要你使用连接池就可以保证每个线程都有自己的连接,所以从那个角度来看,在多线程环境中你的方法没有问题(你可以检查{{ 3}})。
对于您正在执行的Is java.sql.Connection thread safe?和第二个查询,您必须考虑到ResultSet维护指向其当前数据行的游标。因此,问题的关键点在于,如果您使用 相同的“SELECT语句” ,因为在这种情况下,您可以获得相同的游标属性,并且可能会出现一些问题出现。
检查ResultSet的javadoc,特别是这句话:
当生成它的Statement对象关闭,重新执行或用于从多个结果序列中检索下一个结果时,ResultSet对象会自动关闭。