`

spring事物和db连接池的一些想法

阅读更多

当用spring的事物来管理 hibernate的session时,如果在事物中进行了 delete,save,update等操作,则连接不会释放,需要等到事物完成后才会进行关闭,所以当事物中有大量连接时 可想而知 ,这是个灾难。

按照我的想法,只对特定标识的 方法进行事物控制,这需要一个命名规则的问题。其他的方法不需要进行控制,没必要,要不然事物粒度太小了。

      我遇到了两个问题: updateA(  调用1000次  updateB)  ;  updateB( updateC,updateD,...)

我将update开头的方法都进行了事物拦截,   updateB是private的。

每次我调用updateA时 ,就会产生几千个数据库连接 ,于是连接池爆满,然后挂掉。

这里是能理解的  ,updateB中产生了 数据操作, 于是连接不会关闭,等待事物关闭后才能释放。

 

我去掉数据库连接池,采用直连的方式,连接数据库,则连接就不会超过10个,当数据库连接调用完后,连接释放了。

 

我一直搞不明白这是怎么回事,貌似在 直连和连接池下,事物的实现方式是不一样的  。唉去研究他们的源码。郁闷

分享到:
评论

相关推荐

    这是一个可以和spring 整合的db 封装

    2. **数据库连接池**:为了提高性能和资源利用率,通常会使用连接池来管理数据库连接。Spring框架可以集成如C3P0、HikariCP或Apache Commons DBCP等连接池库。 3. **事务管理**:Spring的声明式事务管理使得在方法...

    配置文件连接数据库和优化数据库的连接池

    6. **连接池监控**:使用如Spring Actuator或JMX等工具监控连接池状态,及时发现并解决问题。 在`test`这个示例中,可能包含了一个简单的测试用例,用于验证上述配置和优化措施是否有效。通过运行这个测试,我们...

    Tutorialspoint AB 测试 OrientDB Spring Batch GitLab DBUtils 教程

    它简化了JDBC的使用,提供了诸如连接池、异常处理和结果集操作等功能,帮助开发者编写更安全、更可靠的数据库操作代码。 综合以上技术,这个教程可能是关于如何利用这些工具进行数据处理和分析的实践指南。例如,你...

    DB2数据库连接所需的一些驱动包

    在实际开发中,为了更好的管理和维护,你可能会考虑使用连接池,如Apache的DBCP或C3P0,或者Spring框架的DataSource,它们能有效地管理数据库连接,提高系统性能并减少资源浪费。 总的来说,DB2数据库的连接驱动包...

    spring4+atomikos实现分布式事务

    -- 配置数据库连接池 --> ... ``` 接下来,我们需要在业务层方法上添加`@Transactional`注解,以启用Spring的声明式事务管理。这个注解会告诉Spring在执行该方法时启动一个新的事务,如果出现异常则回滚,否则...

    struts2_spring3.x+mybatis3.x+DB2整合案例

    2. **数据库连接**:配置DB2的JDBC驱动,创建数据库连接池,如使用C3P0或Druid。 3. **Spring配置**:创建Spring的配置文件,定义数据源、事务管理器以及MyBatis的SqlSessionFactory。 4. **MyBatis配置**:编写...

    polardb-jdbc18.zip

    4.2 适当设置连接池,避免频繁创建和销毁连接,提高系统性能。 4.3 使用异常处理机制,确保在发生错误时能正确关闭资源。 4.4 根据业务需求,合理设置超时和重试策略,保证系统的健壮性。 总结,PolarDB-JDBC18是...

    SpringBoot多数据源配置(方式一:配置多个mapper扫描不同的包路径实现多数据源配置).docx

    示例中使用的是Spring Boot 2.3.5.RELEASE版本,以及一些常用的依赖,如MyBatis Plus、Druid连接池等。 ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-web <groupId>...

    瀚高DB驱动.zip

    瀚高DB驱动.zip这个压缩包文件包含了瀚高...同时,理解并利用驱动提供的特性,如连接池管理、事务控制等,可以显著提高应用程序的性能和稳定性。对于大型企业或高并发场景,优化数据库连接和事务处理策略显得尤为重要。

    java的 oracle 和db2驱动

    可以使用连接池(如C3P0、HikariCP等)来管理和复用数据库连接,提高性能。此外,还可以使用PreparedStatement的批处理功能批量执行相似的SQL语句。 6. **异常处理**: 在进行数据库操作时,必须捕获SQLException...

    spring整合三大框架笔记

    本节将详细介绍如何将Spring与Struts2、Hibernate以及相关的连接池等组件进行整合。 #### 二、整合Struts2 ##### 1. 导包 - **包名**:首先确保项目中包含了Struts2的相关jar包,特别是与Spring集成相关的jar包,...

    java H2DB 1.4 Docs

    此外,API还包括了事务管理、连接池、存储过程等功能,以满足复杂的应用需求。 **用户指南** 用户指南是H2DB的重要资源,它详细阐述了如何安装、配置和使用H2数据库。在指南中,你可以找到关于启动数据库服务器、...

    struts2 hibernate spring集成

    4. **数据库连接池配置**: - 导入必要的JAR包:`proxool-0.9.1.jar`, `proxool-cglib.jar`, `mysql-connector-java-5.0.8-bin.jar`。 - 编写`src/jdbc.properties`文件,定义数据库连接参数,如: ```properties...

    jsp连接数据库 DB类

    在JavaServer Pages (JSP) 中,连接数据库是常见的任务,尤其在开发Web应用程序时。DB类通常是指一个自定义的Java类,用于封装...在实际开发中,还需要考虑异常处理、事务管理和连接池的使用,以优化性能和安全性。

    db2数据库驱动jar包

    8. **连接池管理**: 在企业级应用中,通常使用连接池(如C3P0、HikariCP、Apache DBCP等)来管理和复用数据库连接,以提高系统性能和资源利用率。 9. **JNDI查找**: 在Java EE环境中,可以使用Java Naming and ...

    Spring配置多个数据源

    这通常可以通过使用`org.springframework.jdbc.datasource.DriverManagerDataSource`或更高级的如`HikariCP`、`Apache Commons DBCP`等连接池实现。例如,对于主数据库,我们可以这样配置: ```java @Bean(name =...

    db-template:受 Spring JDBC 模板启发的 DB 模板

    "db-template"内部集成了对MySQL连接池的支持,这意味着开发者可以轻松地配置并利用连接池进行高效的数据库操作,无需担心资源的生命周期管理。 然而,目前"db-template"仅支持MySQL数据库。尽管如此,开发团队计划...

    Springboot + Hutool-db 使用 URLClassLoader 动态加载外部数据库和数据池 jar包实例

    在这个场景中,我们看到一个基于Springboot的应用程序结合了Hutool-db库,利用URLClassLoader来实现动态加载外部数据库驱动和数据池的jar包。这使得开发者可以在不重启应用的情况下更新或添加新的数据库连接和资源池...

    基于java的企业级应用开发:Mybatis与Spring的整合.ppt

    另外,`spring-aop`和`spring-aspects`用于AOP开发,`spring-jdbc`和`spring-tx`则负责JDBC支持和事务管理。值得注意的是,Spring框架的`spring-context`依赖于`commons-logging`,但MyBatis已经包含了这个依赖,...

    spring.net中文手册在线版

    Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为...

Global site tag (gtag.js) - Google Analytics