http://www.jasonsdevelopercorner.com/?p=58
How To Get a DBTransaction Object Anytime You Need One
(Originally posted on the “old” Jason Bennett’s Developer Corner, Thursday, March 06, 2008)
If you decide to execute a SQL statement or some PL/SQL code from with your ADF Faces application outside of the ADF BC framework (i.e. without using Entity Objects and View Object), you will need access to a JDBC connection. Do you need to instantiate your own connections, or maintain a separate connection pool? The answer is no! ADF BC provides us with (abstracted) access to the JDBC connection object that is associated with our current application session. Access is provided through the oracle.jbo.server.DBTransaction class. You can get an instance of the DBTransaction object from several places within the ADF BC Framework: ViewObjectImpl, TransactionEventImpl, EntityImpl, and ApplicationModuleImpl. All of these classes have a method called getDBTransaction() that return an instance of the DBTransaction object. Armed with this knowledge, how do we go about getting an instance of DBTransaction anytime we want one? By “anytime time we want one”, I mean externally from a View Object or Entity Object instance. The answer is pretty simple. We just need to access to an instance of the current ApplicationModule. Using the following code, you can get a DBTransaction object anytime you want:
/***
* This method returns the current instance of the session DBTransaction object.
* The method below is implemented from a Singleton Object for utilitarian purposes.
*/
public static synchronized DBTransaction getDBTransaction(){
FacesContext ctx = FacesContext.getCurrentInstance();
ValueBinding vb = ctx.getCurrentInstance().getApplication().createValueBinding(“#{data}”);
BindingContext bc = (BindingContext)vb.getValue(ctx.getCurrentInstance());
//Use your own data control name when creating the DataControl object
//Look in the DataBindings.cpx file … the id attribute of the BC4JDataControl tag
DataControl dc = bc.findDataControl(“MyApplicationModuleControl”);
ApplicationModuleImpl am = ((ApplicationModuleImpl)(ApplicationModule)dc.getDataProvider());
return am.getDBTransaction();
}
分享到:
相关推荐
做数据映射层 NBearLite Version 1.0.0.9 beta ------------------------------- ... ... ... Yes, to begin from NBearLite, there is no need to write any entity classes or entity configurations.
它的核心方法包括begin()用于启动新事务,commit()用于提交事务,rollback()用于回滚事务,以及getStatus()用于获取当前事务的状态。需要注意的是,当在一个已存在事务的线程中尝试开始新的事务,而底层服务不支持...
using( DbTransaction transaction = session.BeginTransaction() ) { // ... // ... transaction.Commit(); } }SessionHelper的使用:SessionHelper对session对象的方法进行了静态封装,如果你...
`mysql.createPool()`可以创建一个连接池,然后通过`pool.getConnection()`获取连接,并在使用完后释放。 9. **异步编程** Node.js的异步编程模型(如回调函数、Promise或async/await)在处理数据库事务时尤为重要...
它提供了DbConnection , DbCommand , DbDataReader和DbTransaction -从托管代码查询和更新数据库所需的类。 完整的文档可在。为什么要使用此库?异步支持该库为数据库操作实现了真正的异步I / O,而没有阻塞(或...
在处理事务时,它通过`IDbConnection`接口的`BeginTransaction()`方法获取`DbTransaction`实例,并在异常处理块中调用`Commit()`或`Rollback()`方法。对于泛型处理,Dapper利用了.NET的反射和表达式树技术,动态生成...
例如,我们可以定义一个抽象基类`DatabaseObject`,然后让`DatabaseConnection`、`DatabaseCommand`和`DatabaseTransaction`类继承自`DatabaseObject`,实现各自的特定行为。 在MySchool项目中,业务层代码将依赖于...
在C#中,SqlTransaction是用于管理SQL Server数据库事务的对象,它是System.Data.SqlClient命名空间的一部分。事务处理在数据库操作中扮演着至关重要的角色,确保数据的一致性和完整性。本篇文章将详细探讨...
using (DbTransaction tran = db.BeginTransaction()) { try { // 执行数据库操作 db.ExecuteNonQuery(tran, CommandType.Text, "INSERT INTO Orders (OrderDate) VALUES (@OrderDate)", new object[] { ...
DBTransaction1.RollbackTransaction; on E: Exception do ShowMessage('Error: ' + E.Message); end; ``` 五、注意事项 1. 在调用Edit方法之前,确保当前记录是有效的,即不是在EOF(End Of File)或BOF...
它提供了DbConnection,DbCommand,DbDataReader,DbTransaction的实现-用于从.NET和.NET Core的异步MySQL连接器查询和更新数据库所需的类。这是MySQL的ADO.NET数据提供程序。 它提供了DbConnection,DbCommand,...
在提供的压缩包中,`How-to-Perform-a-Database-independent-Databind-wit.pdf`文档应该详细解释了如何使用UDLA框架进行数据库无关的数据绑定的步骤,而`UDLADemo.zip`则包含了一个示例项目,通过实践代码可以更好地...
int GetEffect(DbConnection conn, string text, CommandType type, IDataParameter[] paras, DbTransaction DbTrans); /// /// /// /// <param name="sqls"></param> /// <returns></returns> List<int> ...
Delphi是一款强大的Object Pascal编程环境,而Access是Microsoft提供的关系型数据库管理系统,Excel则用于创建和编辑电子表格。在本项目中,开发者使用Delphi与Access交互,并可能将数据导出到Excel进行进一步处理。...
7. 事务支持:DBTransaction.transact(mDb, new DBTransaction.DBTransactionInterface() { @Override public void onTransact() { // to do } };8. 更新表(目前只支持添加字段)@Table(name="t_...
它提供了对.NET Framework数据访问接口的全面支持,包括DbConnection、DbCommand、DbDataReader、DbTransaction等接口,使得.NET开发者能够以标准的方式处理MySQL数据库。 在MySQL-connector-net-6.8.1版本中,主要...
DbCore还包含了一些高级特性,例如事务管理(DbTransaction)、参数化查询(DbParameter)和数据适配器(DbDataAdapter)。DbTransaction提供了对数据库事务的支持,确保了数据的一致性和完整性。DbParameter则用于...
1. **完整的ADO.NET支持**:提供了一套完整的.NET数据提供者接口,包括DbConnection、DbCommand、DbTransaction、DbDataReader、DbDataAdapter等,使.NET开发者能够使用熟悉的对象模型进行数据库操作。 2. **全面的...
`DbConnection`用于建立和管理与数据库的连接,`DbCommand`用于执行SQL命令或存储过程,`DbDataReader`用于从数据库检索数据流,而`DbTransaction`则处理数据库事务。 `.NET db2数据库`、`sqlite`、`mysql`标签表明...