Java EE 应用中对前端用户的数据库操作的审计
2010-09-26 00:00:00 来源:WEB开发网WSConnection.CLIENT_ID
WSConnection.CLIENT_APPLICATION_NAME
WSConnection.CLIENT_OTHER_INFO
WSConnection.OTHER_CLIENT_TYPE
和开源项目的结合
在实际大型项目中,直接通过 JDBC API 访问数据库比较少见,大多通过 O/R mapping 框架如 iBatis 或 Hibernate 去操纵数据库。这些框架往往对数据库连接进行了封装,同时客户的框架又经常进行了二次封装,这使得在连接上传递属性变得不太容易。下面针对 iBatis 和 Hibernate 提出了自己的一些实践解法。
下面都是针对 JDBC 4.0 之前的 JDBC driver 的编程实践。
在 iBatis 中传递连接属性
iBatis 提供了一个接口 com.ibatis.sqlmap.client.SqlMapClient,这个接口包含了数据库增删改查的常用方法。很多客户都是基于该接口的一个 wrapper 类去完成数据库操作。但 SqlMapClient 默认的方法封装掉了对连接的使用,即开发者无须获得连接和释放连接即可使用。
客户常用的 SqlMapClient 包装类的形式:
清单 5. 一个典型的 SqlMapClient 封装类
public class SqlMapClientUtil {
private SqlMapClient sqlMap ;
public SqlMapClientUtil(SqlMapClient sqlMap) {
this.sqlMap = sqlMap ;
}
public SqlMapClient getSqlMap() {
return sqlMap ;
}
…
}
客户使用这种包装类的好处是减轻调用方对 SqlMapClient 的初始化工作,同时也可以对 SqlMapClient 做一些增强。但如果需要在连接上传递属性,需要进行一些改造。改造办法是写一个自己的 SqlMapClient 实现,逐一实现 SqlMapClient 里的方法。
更多精彩
赞助商链接