【问题标题】:Dynamic proxies to auto-save models自动保存模型的动态代理
【发布时间】:2012-10-02 17:35:50
【问题描述】:

我试图在 java 中使用代理来跟踪对象并在调用 set* 方法时保存它们,从而实现一些自动魔术。我开始使用 java 的内置代理,一切正常,但据我所知,我需要每个模型的接口,这是我试图避免的事情。

这就是 CGLIB 的用武之地,它允许我在不使用接口的情况下创建模型的代理。但是,我现在如何检索原始对象,即我要保存的对象?

最佳解决方案是类似于 hibernate 使用的 EntityManager 接口,您可以在其中保留原始对象,但仍会对其进行跟踪。

【问题讨论】:

  • 您的意思是您正在尝试使用标准 Java 序列化来持久化对象,但在序列化使用 CGLIB 检测的类时遇到问题?
  • 我正在使用 xstream 将对象序列化为 xml,但问题是我无法从 MethodInterceptor 类的拦截方法中访问模型对象。我希望这让它更清楚一些。

标签: java hibernate proxy-classes cglib


【解决方案1】:

MethodInvocation 接口只指定了一个将MethodInvocation 作为参数的方法。 MethodInvocation 有几种方法来检索正在执行的对象:getStaticPart、getThis。你试过打电话给他们吗?

作为一个无耻的插件,你实际上可以将 Hibernate 与 Xstream 一起使用。这是my blog post 关于 Xstream 持久性的。但在这种情况下,Xstream 用于将 XML 格式的字段保存在数据库中。

【讨论】:

  • 我已经阅读了您的博客文章,这似乎是一件很酷的事情。虽然不是我要找的东西,但我们试图避免使用 db。另一个注释看起来非常好,但我没有尝试过 aopalliance 的 MethodInvocation。我现在就试一试,让大家知道结果如何。 :)
猜你喜欢
  • 2016-01-04
  • 2019-03-21
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 2012-07-10
  • 1970-01-01
相关资源
最近更新 更多