`
e_soft
  • 浏览: 48775 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

How To Get a DBTransaction Object Anytime You Need One

    博客分类:
  • adf
 
阅读更多
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();

}
分享到:
评论

相关推荐

    NBEARLISY使用

    做数据映射层 NBearLite Version 1.0.0.9 beta ------------------------------- ... ... ... Yes, to begin from NBearLite, there is no need to write any entity classes or entity configurations.

    JavaTransaction

    它的核心方法包括begin()用于启动新事务,commit()用于提交事务,rollback()用于回滚事务,以及getStatus()用于获取当前事务的状态。需要注意的是,当在一个已存在事务的线程中尝试开始新的事务,而底层服务不支持...

    轻量级数据持久层组件Restful.Data.zip

     using( DbTransaction transaction = session.BeginTransaction() )  {  // ...  // ...  transaction.Commit(); } }SessionHelper的使用:SessionHelper对session对象的方法进行了静态封装,如果你...

    nodejs-mysql-transaction:NodeJS MySQL事务的演示仓库

    `mysql.createPool()`可以创建一个连接池,然后通过`pool.getConnection()`获取连接,并在使用完后释放。 9. **异步编程** Node.js的异步编程模型(如回调函数、Promise或async/await)在处理数据库事务时尤为重要...

    MySqlConnector:用于.NET和.NET Core的异步MySQL连接器

    它提供了DbConnection , DbCommand , DbDataReader和DbTransaction -从托管代码查询和更新数据库所需的类。 完整的文档可在。为什么要使用此库?异步支持该库为数据库操作实现了真正的异步I / O,而没有阻塞(或...

    dappper封装测试

    在处理事务时,它通过`IDbConnection`接口的`BeginTransaction()`方法获取`DbTransaction`实例,并在异常处理块中调用`Commit()`或`Rollback()`方法。对于泛型处理,Dapper利用了.NET的反射和表达式树技术,动态生成...

    抽象工厂MySchool

    例如,我们可以定义一个抽象基类`DatabaseObject`,然后让`DatabaseConnection`、`DatabaseCommand`和`DatabaseTransaction`类继承自`DatabaseObject`,实现各自的特定行为。 在MySchool项目中,业务层代码将依赖于...

    c#中SqlTransaction——事务详解

    在C#中,SqlTransaction是用于管理SQL Server数据库事务的对象,它是System.Data.SqlClient命名空间的一部分。事务处理在数据库操作中扮演着至关重要的角色,确保数据的一致性和完整性。本篇文章将详细探讨...

    20050603--企业库系列讲座(3):数据访问应用程序块

    using (DbTransaction tran = db.BeginTransaction()) { try { // 执行数据库操作 db.ExecuteNonQuery(tran, CommandType.Text, "INSERT INTO Orders (OrderDate) VALUES (@OrderDate)", new object[] { ...

    Delphi Edit方法编辑数据库中的内容

    DBTransaction1.RollbackTransaction; on E: Exception do ShowMessage('Error: ' + E.Message); end; ``` 五、注意事项 1. 在调用Edit方法之前,确保当前记录是有效的,即不是在EOF(End Of File)或BOF...

    NET和.NET Core的异步MySQL连接器-.NET开发

    它提供了DbConnection,DbCommand,DbDataReader,DbTransaction的实现-用于从.NET和.NET Core的异步MySQL连接器查询和更新数据库所需的类。这是MySQL的ADO.NET数据提供程序。 它提供了DbConnection,DbCommand,...

    如何使用UDLA框架执行与数据库无关的数据绑定

    在提供的压缩包中,`How-to-Perform-a-Database-independent-Databind-wit.pdf`文档应该详细解释了如何使用UDLA框架进行数据库无关的数据绑定的步骤,而`UDLADemo.zip`则包含了一个示例项目,通过实践代码可以更好地...

    .NET DbHelper 数据访问类(MSSQL Mysql ORACLE)

    int GetEffect(DbConnection conn, string text, CommandType type, IDataParameter[] paras, DbTransaction DbTrans); /// /// /// /// <param name="sqls"></param> /// <returns></returns> List<int> ...

    DELPHI操作ACCESS数据库+EXCEL

    Delphi是一款强大的Object Pascal编程环境,而Access是Microsoft提供的关系型数据库管理系统,Excel则用于创建和编辑电子表格。在本项目中,开发者使用Delphi与Access交互,并可能将数据导出到Excel进行进一步处理。...

    AndroidSqlite数据库操作封装SQLiteUtils.zip

    7. 事务支持:DBTransaction.transact(mDb, new DBTransaction.DBTransactionInterface() {  @Override  public void onTransact() {  // to do   } };8. 更新表(目前只支持添加字段)@Table(name="t_...

    MySQL驱动 mysql-connector-net-6.8.1

    它提供了对.NET Framework数据访问接口的全面支持,包括DbConnection、DbCommand、DbDataReader、DbTransaction等接口,使得.NET开发者能够以标准的方式处理MySQL数据库。 在MySQL-connector-net-6.8.1版本中,主要...

    System.Database.dll.rar

    DbCore还包含了一些高级特性,例如事务管理(DbTransaction)、参数化查询(DbParameter)和数据适配器(DbDataAdapter)。DbTransaction提供了对数据库事务的支持,确保了数据的一致性和完整性。DbParameter则用于...

    System.Data.SQLite_sqlite_

    1. **完整的ADO.NET支持**:提供了一套完整的.NET数据提供者接口,包括DbConnection、DbCommand、DbTransaction、DbDataReader、DbDataAdapter等,使.NET开发者能够使用熟悉的对象模型进行数据库操作。 2. **全面的...

    .net DbProviderFactories.rar

    `DbConnection`用于建立和管理与数据库的连接,`DbCommand`用于执行SQL命令或存储过程,`DbDataReader`用于从数据库检索数据流,而`DbTransaction`则处理数据库事务。 `.NET db2数据库`、`sqlite`、`mysql`标签表明...

Global site tag (gtag.js) - Google Analytics