2013-09-30 42 views
-2

我有一个引用java.lang.reflect.Method的类,我需要存储该类和该引用。如何通过Hibernate将java.lang.reflect.Method存储到数据库中

有人知道该怎么做吗?

在我看来,我不能直截了当地做,但我想我可以将java.lang.reflect.Method分解成类名,方法名,类名参数,并存储这些字符串。这样,我可以在加载时从它们重新生成Method对象。

它有道理吗?在这种情况下,有关如何做到这一点的想法?

+2

你有正确的想法,只是执行。 –

回答

0

您无法将Method实例保存在数据库中。它不可序列化。

您可以做的最好的做法是创建一对代表方法名称和签名的字符串以及定义它的类的完全限定名称。如果将它们存储在数据库中,则可以使用反射...重建Method(和Class),前提是该类在类路径中可用。

有关如何做到这一点的任何想法?

它应该是相当直接的使用ClassMethod API。我建议你阅读各自的javadoc,并尝试自己编码。如果您遇到问题,请提出后续问题,包括提供问题的代码。


而且你知道如何/在哪里我应该指定一个去组成和重建战略?我希望Hibernate为我做这件事,以免污染我的商业模型层。

在您的Java代码中。这不是Hibernate/JPA会自动为你做的事情。 (一开始,关于类存在于classpath中警告实际上意味着反向转换不能保证工作...)


其实,你的坚持Method对象“规定”(在某些表单或其他)是一个标志,表明你的应用程序设计已经得到方式太复杂了... IMO。

+0

谢谢Stephen!而已。你知道我应该怎样/在哪里指定分解和重构策略?我希望Hibernate为我做这件事,以免污染我的商业模型层。 –

+0

我很抱歉我最后的评论。我没有看完整的答案。再次感谢! –

+0

是的,我完全同意:这其实意味着一个糟糕的设计,但这是一个旨在由最终用户动态配置的测试应用程序。这就是为什么它是反射密集型的。我从来不会在基础应用程序中做这种事情。 –

相关问题