`

DataSourceUtils.releaseConnection()

 
阅读更多

引用:当Spring事务方法运行时,就产生一个事务上下文,该上下文在本事务执行线程中针对同一个数据源绑定了一个唯一的数据连接(或其衍 生品),所有被该事务上下文传播的方法都共享这个数据连接。这个数据连接从数据源获取及返回给数据源都在Spring掌控之中,不会发生问题。如果在需要 数据连接时,能够获取这个被Spring管控的数据连接,则使用者可以放心使用,无须关注连接释放的问题。

    通过调用 jdbcTemplate.getDataSource().getConnection()显式获取一个连接,这个连接不是方法事务上下文线程绑定的连接,所以如果开发者如果没有手工释放这连接(显式调用 Connection#close() 方法),则这个连接将永久被占用(处于 active 状态),造成连接泄漏!

    那么,如何获取这些被Spring管控的数据连接呢?Spring提供了两种方法:其一是使用数据资源获取工具类;其二是对数据源(或其衍生品如Hibernate SessionFactory)进行代理。

 

DataSourceUtils.releaseConnection(),放此ConnectionHolder保留的当前连接,使得该当前的Connection可以得到复用,对提供Jdbc操作的性能很有帮助。

 

分享到:
评论

相关推荐

    DButils.zip

    DataSourceUtils.releaseConnection(conn); } } } ``` 在这个例子中,`DataSourceUtils.getConnection()`是获取连接的方法,`BeanHandler`则将查询结果自动映射到User对象中。当执行完毕后,记得释放数据库连接...

    jdbc驱动包

    DataSourceUtils.releaseConnection(conn, dataSource); } } } ``` 总结起来,"jdbc驱动包"主要涉及Java的JDBC接口及其驱动程序,而C3p0和DBUtils是两个实用的数据库连接池和数据库操作工具,它们能够帮助开发者...

    mysql-jdbc-Spring源代码分析

    4. **异常处理**:如果执行过程中发生`SQLException`,则会通过`DataSourceUtils.releaseConnection()`方法关闭连接,并将异常转换为Spring的异常体系中的异常类型。 5. **资源释放**:无论是否出现异常,最终都会...

    数据库访问层的实现(一)——模板方法模式

    DataSourceUtils.releaseConnection(connection, dataSource); } @Override protected String getSQL() { // 根据业务需求返回SQL语句 return "SELECT * FROM users"; } @Override protected void ...

    Spring5源码之JDBC

    }} finally {DataSourceUtils.releaseConnection(con, getDataSource());}}在execute方法中,Spring首先从DataSource获取连接(Connection),并确保PreparedStatementCreator不为空,然后通过这个creator创建...

    c3p0数据库连接

    DataSourceUtils.java c3p0数据库连接

    springframework.4.3.22.RELEASE

    Potential resource leak in DataSourceUtils.doGetConnection [SPR-17559] #22091 SpEL, error parsing big InlineMap [SPR-17605] #22137 @Value Optional<...> field injection fails in case of registered ...

    edb:春天的 jfinal

    springBoot 与 jfinalDb 的数据层操作,兼容 spring 和 jfinal 的事务1.1 围绕 DataSource 数据源对象和 jfinal 的配置类 com.jfinal.plugin.activerecord.Config和 spring事务相关的 DataSourceUtils.getConnection...

    day57-分页1

    QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource()); String sql = "select * from book limit ?,?"; try { list = qr.query(sql, new BeanListHandler(Book.class), (page.getCurrentPage()-1...

    springframework.5.0.12.RELEASE

    Potential resource leak in DataSourceUtils.doGetConnection [SPR-17559] #22091 HibernateTransactionManager (unintentionally) bound to Hibernate 5.2 SharedSessionContractImplementor [SPR-17557] #22089 ...

    工具类的jar包集合

    8. `DataSourceUtils.java`:数据库数据源工具类,可能包含了数据库连接池的管理,如初始化、获取、释放数据库连接等功能。 9. `FastDFSClient.java`:FastDFS是一个开源的高性能、轻量级的分布式文件系统,这个...

    Spring源代码解析(三):Spring_JDBC.doc

    JdbcTemplate在内部首先通过`DataSourceUtils.getConnection`获取数据库连接,并可能对连接进行一些特殊处理,例如如果存在`NativeJdbcExtractor`,则会尝试获取原生的JDBC连接,或者创建一个代理连接以支持...

    Spring源代码解析3:SpringJDBC[归纳].pdf

    `JdbcTemplate`通过`DataSourceUtils.getConnection(getDataSource())`获取数据库连接。`DataSource`是Java的JDBC数据源,负责管理数据库连接。在获取到连接后,`JdbcTemplate`可能需要对连接进行特殊处理,如使用`...

    spring-framework-reference4.1.4

    Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................

    spring-framework-reference-4.1.2

    Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................

    分库代码(备份库、建库,动态创建数据源、动态切换数据源)

    DataSourceUtils.getConnection(targetDataSource); } ``` 在`multiDbDemo`这个压缩包中,我们可以期待找到实现上述功能的Java代码示例。这些示例可能包括数据库连接配置、备份与恢复脚本、动态数据源创建和切换的...

    DBUtils模拟用泛型实现

    conn = DataSourceUtils.getConnection(); ps = conn.prepareStatement(sql); setParameters(ps, params); rs = ps.executeQuery(); while (rs.next()) { T entity = clazz.newInstance(); // 使用反射设置...

    详解Java使用sqlite 数据库如何生成db文件

    DataSourceUtils.doCloseConnection(conn, dataSource); } catch (Exception e) { } } } ``` 最后,使用 update 方法创建表和插入数据: ```java public static void main(String[] args) throws Exception { ...

    ConnMethods.zip_Java编程_Java_

    连接数据库可以通过`DataSourceUtils.getConnection()`: ```java JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.execute("SELECT * FROM myTable"); ``` 8. **JTA(Java ...

Global site tag (gtag.js) - Google Analytics