java – JDBC事务与连接澄清
我正在使用JDBC与我的Postgres数据库进行交谈.如果我的整个应用程序运行一个单一的连接,即只有一个呼叫;
DriverManager.getConnection("jdbc:postgresql://host:5432/database",user,pass); 但是这个Connection对象在Java中的多个线程之间是共享的,我假定任何使用SQL事务(BEGIN和COMMIT样式)的尝试只会变得非常混乱和破坏,因为Java线程可能会交错? Connection对象“知道”哪个Java线程正在使用它进行查询? 我应该每个Java线程有一个Connection对象,并以这种方式使用SQL事务吗?还是应该使用synchronized来执行Java中的所有事务隔离? 解决方法
只要详细说明现有答案:
PgJDBC’s 实际上有很多方法可以在多个线程之间使用连接: >使用从中获取连接的内部连接池,执行与它们的配合,并将其返回到池中.对于大多数应用来说,这是非常好的选择. Java存在许多JDBC连接池实现,所以不要自己滚动. dbcp和c3p0是两个流行的实现,但是如果您使用的是servlet环境或应用服务器,则通常应使用服务器的连接池而不是自带的. 一般来说,尽管如此,你应该使用一个连接池并完成它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |