怎么在java层面截获对数据库表的操作

微瞰技术
博客专家认证
2017-12-15 04:45:00
需求就是要把对数据库表的操作在java层面,不使用触发器,现在的想法是对Hibernate/Jpa包中的方法进行save/delete方法利用AOP做切面。但是没有成功。求助各位有没有好的办法
...全文
316 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
微瞰技术 2018-05-28
  • 打赏
  • 举报
回复
最终的原因应该是this关键字的原因。
maradona1984 2017-12-21
  • 打赏
  • 举报
回复
首选,mysql可以考虑使用canal,可以监控所有的数据库的变化,原理是用java伪装一个从库,然后对binlog分析 其次,数据源使用druid,写个druid的过滤器,无关你持久化框架,基本啥都可以拿到,包括参数,而且换个数据源其实对系统影响微乎其微 再次,利用持久化框架的过滤器功能(hebernate不知道能否做到,mybatis的比较简单) 再次,利用日志,自行实现一套日志的Appender,自行解析sql 最次就是AOP了
missMeyo 2017-12-21
  • 打赏
  • 举报
回复
如果只是为了监视运行的SQL,可以使用druid, 如果为了记录是否执行数据表操作,用log4j 或者aop拦截并增加日志。
那年花 2017-12-20
  • 打赏
  • 举报
回复
最好先说说你要这么做的原因 另外像他们说的 分析不成功原因
强长黑粗硬 2017-12-16
  • 打赏
  • 举报
回复
楼上正解,首先分析下没起作用的原因吧。 怎么实现也都是AOP的理念。 另外有个疑问。 对save/delete方法利用AOP做切面是可以的,但是你怎么判断事务呢? transaction commit和rollback你需要区分么? rollback了的话,其实就数据库来讲,其实是没有操作的。 你这个需求的目的是监控数据库操作是否合规?还是为了监控数据变化?
oyljerry 2017-12-15
  • 打赏
  • 举报
回复
按理AOP是最适合做这个事情的。要分析一下没有成功的原因

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧