0 0

关于事务操作的数据库连接如何管理5

在写一个简易的php,orm框架 (php中orm是否有意义就不用吐槽了),减少劳动量

一般数据库连接都封装在dao层,但是涉及事务操作的,需要在service层管理数据库连接

 

以前写java的时候,涉及事务操作的,是在dao层专门设计一个带有数据库连接参数的同功能函数,在service层调用的时候,传入连接即可

好像也可以使用threadlocal、jndi或者aop,管理连接,没有尝试过

 

写php的时候,由于php的机制,对象不是常驻内存,请求完毕,对象就销毁,所以把数据库连接获取,设计为单例,保存在orm层,也可以是视为dao层,service层不再管理连接,因为是单例的,所有操作都在一个连接内

其实,php的进程模式(线程模式不讨论),一个请求内的操作是在一个连接内,上面的设计有些画蛇添足

对php进程模式,一请求,所有操作全在一个连接内,信心不足(不了解底层机制如何管理连接)

 

python可以用装饰器,with管理连接,听说。。。

 

写这么多,无非是抛砖引玉

不管什么语言,在分层设计下,事务管理如何设计

 

洗耳恭听啊。。。

 

 

 

 


问题补充:涉及多表操作的事务管理,放在service层,这种问题,感觉可以抽象为,保存数据连接的变量,如何在service层和dao层中传递,主动方式,通过参数传递,被动,放在容器里,谁用谁取,还有其他的办法,或者设计思路么?
2014年12月18日 12:08

2个答案 按时间排序 按投票排序

0 0

下面是bboss的多数据库事务操作实例(基于java 本地线程做的 ):

TransactionManager tm = new TransactionManager();
try{
tm.begin();//开始事务
SQLExecutor.delete("delete from LISTBEAN where id=?",1);//不带数据源dbname的api,默认在第一个数据源上执行db操作,也就是ds0数据源。
		SQLExecutor.deleteWithDBName("ds0","delete from LISTBEAN where id=?",1);//显示指定db操作在ds0数据源上操作
		SQLExecutor.deleteWithDBName("ds1","delete from LISTBEAN where id=?",1);//显示指定db操作在ds1数据源上操作
tm.commit();//提交事务
}
catch(Exception e)
{
   throw e;
}
finally
{
   tm.release();//释放事务资源,如果有异常发生,则会回滚事务
}


关于bboss多数据源配置可查看文档:
bboss持久层多数据源配置及使用方法

2014年12月20日 13:00
0 0

我的思路是这样的
1.把所有的连接从一开始创建完毕后
2.你想使用时就去拿来使用,但是前提是有period,当失效时,有后台线程回收,但仅仅是放入队列,而非是把连接给取缔
3.更为重要一点,为了防止事务非一致性,有必要有重发的功能

2014年12月18日 14:28

相关推荐

    C# 数据库连接池 C# 数据库连接池

    数据库连接池是数据库管理中的一个重要概念,它在C#编程中扮演着优化数据库操作的关键角色。C#数据库连接池是一种管理数据库连接的技术,通过复用已存在的连接而不是每次请求时都创建新的连接,从而提高数据库操作的...

    数据库连接的4种方式

    连接池是管理数据库连接的有效策略,它可以复用已建立的连接,减少创建和销毁连接的开销。常见的Java连接池有C3P0、Apache DBCP、HikariCP和DBCP2等。通过预配置一定数量的连接,应用在需要时可以从池中获取,用完后...

    数据库连接通用模块数据库连接通用模块

    数据库连接通用模块是软件开发中的一个重要组成部分,它允许应用程序与各种数据库进行交互,实现数据的存取、查询、更新和管理。在不同的编程语言中,如Java、Python、C#等,都有相应的数据库连接库或模块来实现这一...

    数据库连接池 java 整理

    数据库连接池是一种管理数据库连接的机制,它允许程序高效地重复使用已建立的数据库连接,而不是每次需要时都创建新的连接。这显著提高了性能,减少了资源消耗,并降低了数据库服务器的压力。 在Java中,有多种流行...

    数据库连接 数据库连接

    数据库连接是计算机应用程序与数据库系统之间建立的通信通道,它是数据操作和管理的核心部分,尤其在Web应用、企业信息系统和各种软件开发中扮演着至关重要的角色。本文将深入探讨数据库连接的相关知识点,包括连接...

    自定义的数据库连接池

    数据库连接池是数据库管理中的重要概念,它在Java Web应用中尤其常见,主要用于优化数据库的连接管理和资源利用。自定义数据库连接池是为了更好地适应特定应用的需求,提高数据存取的效率,减少系统开销,避免频繁...

    一个用于C#数据库连接的一个通用类,好东西哦!

    ADO.NET支持连接池,它管理数据库连接的创建和销毁,提高了性能。默认情况下,连接池是启用的,但可以调整池的大小和行为。 创建一个通用的数据库连接类,可以考虑以下设计: - 参数化构造函数接收数据库类型(如...

    数据库连接池的图解原理

    总的来说,数据库连接池是优化数据库操作的关键工具,理解其工作原理对于开发高效、稳定的应用程序至关重要。在实际应用中,选择合适的连接池实现,并合理配置参数,能够显著提升系统的响应速度和资源利用效率。

    C# 数据库连接池实例

    数据库连接池是数据库管理中的一个重要概念,特别是在使用像C#这样的编程语言进行数据库操作时,它的存在极大地提高了数据库操作的效率和性能。本实例将深入探讨C#中的数据库连接池,以及如何有效地利用它。 首先,...

    ADO数据库连接控件

    6. 事务管理:使用Connection对象的BeginTrans、CommitTrans和RollbackTrans方法进行事务操作。 总的来说,ADO数据库连接控件为开发者提供了一种方便、统一的方式来访问和操作各种类型的数据库,简化了数据库应用的...

    Java数据库连接Java数据库连接.ppt

    Java 数据库连接可以用于各种数据库管理系统,如 MySQL、Oracle、SQL Server 等。 Java 数据库连接的主要内容包括: 1. 创建数据源:Java 程序可以通过 JDBC 创建一个数据源,然后使用该数据源连接数据库。 2. ...

    db2数据库连接工具

    4. **对象管理**:允许用户管理和操作数据库对象,如表、视图、存储过程、触发器等,包括创建、修改、删除等操作。 5. **备份与恢复**:支持对数据库进行备份和恢复操作,确保数据的安全性。 6. **性能监控**:...

    j2ee数据库相关资料,jsp数据库连接,已经相关资源

    标签"j2ee数据库"表明这个资料包着重于J2EE环境下的数据库操作,这包括了数据库连接池的使用、实体管理、持久化操作等。学习这些内容将帮助开发者掌握在大型分布式系统中如何高效、安全地处理数据。 综上所述,这个...

    通用数据库连接库C#版

    "通用数据库连接库C#版"正是这样一款解决方案,它旨在简化数据库操作,允许开发者通过统一的接口来处理不同类型的数据库。 首先,我们要理解什么是数据库连接库。它是一种中间件,提供了与各种数据库系统(如MySQL...

    jdbc连接Oracle数据库实现学生管理系统(数据库连接池实现多用户操作同一数据库)

    总的来说,这个项目提供了从JDBC连接Oracle数据库,到使用SQL操作数据,再到实现数据库连接池优化的实践案例,对于学习和理解数据库管理和Java编程有极大的帮助。开发者可以根据此项目进行扩展,比如增加权限控制、...

    C#数据库连接

    连接池管理已打开和关闭的数据库连接,当需要时,它会重用现有的连接而不是创建新的。在创建连接字符串时,可以通过设置`Pooling=true`启用连接池。 ### 6. 错误处理和异常 在进行数据库操作时,应始终捕获可能的...

    C#与数据库的连接

    本章将深入探讨C#与数据库连接的相关知识点,以及如何进行数据库的读取、写入、事务处理和安全性配置。 首先,我们要了解`Ch0801_数据库连接`章节的内容,这是建立数据库连接的基础。C#中,我们通常使用ADO.NET框架...

    C语言数据库连接池 libzdb-3.0

    在软件开发中,尤其是在高并发的Web服务中,数据库连接管理是至关重要的一个环节。数据库连接池(Connection Pool)技术应运而生,它能有效地管理和复用数据库连接,提高系统的性能和响应速度。libzdb-3.0是一款专为...

    数据库连接池的原理机制学习

    在数据库连接管理场景下,连接池技术正好符合这一模式的要求。 **连接池的基本思想**:建立一个包含一定数量预先创建好的数据库连接的缓冲池。应用程序在需要数据库连接时,可以从这个缓冲池中获取一个现有的连接,...

    跨多个数据库操作,同时连接多个的数据库,同时操作

    在复杂的企业级系统中,往往需要连接并操作多个数据库,以满足不同业务场景的需求。这通常涉及到跨数据库操作和分布式事务处理,确保数据的一致性和完整性。以下是一些关于这个主题的重要知识点: 1. **JTA(Java ...

Global site tag (gtag.js) - Google Analytics