Java EE 应用中对前端用户的数据库操作的审计
2010-09-26 00:00:00 来源:WEB开发网于是将上面的 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 项目中都有“在数据库端审计前端登录用户”的需求。本文针对几种典型场景给出了如何传递用户标识的编程实践,并介绍了如何在数据库端进行审计查看。希望能给相关开发者提供一些借鉴。
更多精彩
赞助商链接