【发布时间】:2011-07-11 19:20:41
【问题描述】:
我正在尝试向使用 AspectJ 的系统中执行的所有 SQL 添加特定的 SQL。
我以前没有使用过 AspectJ,但我相信我需要做的是在
上创建一个切入点调用(PreparedStatement Connection.prepareStatement(String))
并提供建议
之前(连接 con,字符串 sql): 调用(PreparedStatement Connection.prepareStatement(字符串)) && 目标(con) && 参数(sql){ sql = "执行 myStordProc();" + sql; }
在这之后 Connection.prepareStatement() 方法将继续使用更改后的字符串?
或者我应该拦截对 prepareStatement 和 executeQuery 的调用并创建一条建议,将其更改为 addBatch() 添加我存储的过程调用作为第一批 sql,然后最终使用 executeBatch() 执行原始 sql?
任何指针将不胜感激。
谢谢
【问题讨论】:
-
乔,我认为这样做是有可能的,但看起来非常可怕。我强烈建议您尝试寻找另一种解决方案。问问自己为什么?和还有什么...?
-
@Augusto 它看起来确实很吓人,我考虑的另一个选择是创建一个实现 java.sql.Connection 的包装器/类并将 java.sql.Connection 的实例重构到包装器,但我有点担心关于重构那么多事件。
标签: java sql-server aspectj pointcuts