Spring JdbcTemplate 和线程

Posted

技术标签:

【中文标题】Spring JdbcTemplate 和线程【英文标题】:Spring JdbcTemplate and Threading 【发布时间】:2010-10-02 19:29:20 【问题描述】:

在 Swing 中使用JdbcTemplate 分叉线程以执行插入是否安全。

这是一个日志事件,我尽可能不希望它影响感知性能。

【问题讨论】:

【参考方案1】:

来自 Spring 论坛的This answer 说 yes.t=25965

JdbcTemplate 是一个单例,一旦设置就不会改变状态。

【讨论】:

不再。谢谢。【参考方案2】:

还要注意它的线程安全是very well explained in the Spring 3.1 reference documentation:

13.2.1.2 JdbcTemplate 最佳实践

JdbcTemplate 类的实例在配置后是线程安全的。这很重要,因为这意味着您可以配置 JdbcTemplate 的单个实例,然后安全地将这个共享引用注入到多个 DAO(或存储库)中。 JdbcTemplate 是有状态的,因为它维护对 DataSource 的引用,但这种状态不是会话状态。

【讨论】:

并仔细阅读“一旦配置”位,所以不要滥用 setMaxResult 来限制给定查询的给定线程的结果集,因为它会影响所有查询和使用共享 JdbcTemplate 实例的所有线程。 【参考方案3】:

为什么你会认为它不会?

我没有直接从 Swing 使用 JdbcTemplate,但我有几个 Web 应用程序(每个请求都有一个单独的线程),我从来没有遇到过任何线程问题。在这种情况下,模板在应用程序启动时配置一次,并使用不同的参数重复调用。

如果您担心线程问题,您可以随时为每个日志线程创建一个新模板...

【讨论】:

以上是关于Spring JdbcTemplate 和线程的主要内容,如果未能解决你的问题,请参考以下文章

JdbcTemplate基本使用

Spring Boot 2 + JdbcTemplate - 有没有办法为每个支持的数据库提供 SQL 查询?

四JdbcTemplate的配置

Spring——spring整合JDBC,

jdbc连接池问题 使用的是spring框架自带的jdbctemplate,请问一下在同一次请求中

Spring的数据库开发