spring mvc 数据库方面如何处理并发的?

安静的敲代码 发布于 2016/05/26 17:05
阅读 1K+
收藏 1

看了ThreadLocal,了解其应用的场景多在数据库连接,事务管理方面,并在spring,hibernate的源码中有广泛运用。所以,这里在没有看源码的基础上,有个疑问:spirng mvc项目在连接数据库时都是根据线程来连接数据库的吗?即一次请求会连接一次数据库,然后销毁这样吗?因为之前一直理解是,初始化的时候连接好数据库,然后在服务关闭时才会销毁。不知应该是怎样的?谢谢

加载中
0
Gillian_Male
Gillian_Male
是有数据库连接池的好吗
0
beyondforever68
beyondforever68
数据库连接池啊
0
10书生
10书生

1. 数据库连接的创建和销毁成本是很高的,所以一般需要池化数据库连接提高数据库操作响应时间。

2. 推荐一个成熟的数据库连接池组件,可以学习其使用方式和实现原理,https://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html

0
xpbob
xpbob
ThreadLocal的目的就是线程独占资源,避免多线程的问题。你如果用的是JDBC开发,那么调用了close就关闭了连接,下次想连接必须再次连接一次数据库,如果你是用了数据源的话,或者数据库连接池,他内部重新改写了close方法,你调用close只是再次回到池里,如果下次还想连接,直接从池里取出原来用过的连接,不需要重新创建,这种情况下,他真的是服务关闭才销毁
安静的敲代码
安静的敲代码
多谢。涨姿势了!
0
iBase4J
iBase4J
http://git.oschina.net/iBase4J/iBase4J
0
一只小桃子
一只小桃子
现在一般是配置一个dataSource,连接池。事物管理器会从连接池获取一个Connection绑定到当前线程。如果你的事务传播需要开新的事务,又会拿一个。用完了会返回到连接池内。不用关。
返回顶部
顶部