WEB开发网
开发学院软件开发Java Java EE 应用中对前端用户的数据库操作的审计 阅读

Java EE 应用中对前端用户的数据库操作的审计

 2010-09-26 00:00:00 来源:WEB开发网   
核心提示: 于是将上面的 SqlMapClientUtil 重构成:清单 7. 重构过的 SqlMapClient 封装类publicclassSqlMapClientUtil{privateSqlMapClientsqlMap;publicSqlMapClientgetSqlMapClient(){ret

于是将上面的 SqlMapClientUtil 重构成:

清单 7. 重构过的 SqlMapClient 封装类

public class SqlMapClientUtil { 
  private SqlMapClient sqlMap ; 
  public SqlMapClient getSqlMapClient() { 
    return new MySqlMapClient(sqlMap) ; 
 } 
… 
} 

在 Hibernate 中传递连接属性

典型的使用 Hibernate 操作数据库的编程模型如下:

清单 8. Hibernate 的典型编程模型

Session sess = factory.openSession(); 
Transaction tx; 
try { 
  tx = sess.beginTransaction(); 
  //do some work 
  ... 
  tx.commit(); 
} catch (Exception e) { 
  if (tx!=null) tx.rollback(); 
  throw e; 
} finally { 
  sess.close(); 
} 

为了能在会话内传递用户标识,将上述编程模型改造成下面方式即可:

清单 9. 加进传递用户标识后的 Hibernate 编程模型

Session sess = factory.openSession(); 
Transaction tx; 
Connection conn ; 
try { 
  tx = sess.beginTransaction() ; 
  conn = sess.connection() ; 
  OracleConnection oraconn = (OracleConnection)conn ; 
  // 上面连接或转换成 DB2Connection,视数据库而定 
  oraconn.setClientIdentifier("") ; 
  //do some work 
  oraconn.clearClientIdentifier("") ; 
  tx.commit(); 
} catch (Exception e) { 
  if (tx!=null) tx.rollback(); 
    throw e; 
} finally { 
  sess.close(); 
} 

结束语

本文源于客户的真实场景,很多客户在实际 Java EE 项目中都有“在数据库端审计前端登录用户”的需求。本文针对几种典型场景给出了如何传递用户标识的编程实践,并介绍了如何在数据库端进行审计查看。希望能给相关开发者提供一些借鉴。

上一页  3 4 5 6 7 8 

Tags:Java EE 应用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接