Java 了解hibernate对象更新方法的堆栈跟踪

Java 了解hibernate对象更新方法的堆栈跟踪,java,hibernate,Java,Hibernate,数据库表在更新过程中有时会面临等待,此实体正在从多个位置/关联进行更新 有没有办法获取更新该实体的方法的堆栈跟踪 我重写了拦截器的onFlushDirty方法,这样我可以知道实体何时被更新,但我需要知道从哪里调用该实体进行更新的跟踪。如果我正确理解您的问题,您可以只记录stacktrace: 请记住,这是一种性能昂贵的方式。因此,您应该使用guard语句来防止在您的生产环境中进行此日志记录,例如: if (log.isDebugEnabled()) { // log stacktrace

数据库表在更新过程中有时会面临等待,此实体正在从多个位置/关联进行更新

有没有办法获取更新该实体的方法的堆栈跟踪


我重写了拦截器的
onFlushDirty
方法,这样我可以知道实体何时被更新,但我需要知道从哪里调用该实体进行更新的跟踪。

如果我正确理解您的问题,您可以只记录stacktrace:

请记住,这是一种性能昂贵的方式。因此,您应该使用guard语句来防止在您的生产环境中进行此日志记录,例如:

if (log.isDebugEnabled()) {
    // log stacktrace
}
另一个选择是使用IDE。大多数IDE,比如Eclipse,可以向您显示任何方法的“调用层次结构”。
它可能不适用于您当前的代码,因为您可能没有使用DAOs来封装数据存储,但它可能是一种更有效的方法。

非常感谢,它会有所帮助。不幸的是,我想把它放在一个已部署的测试版本上,稍后再检查日志。
getStackTrace
会有帮助,但我担心性能。我在寻找一种更有效的休眠方式,比如拦截器。我不明白这个问题。你想要stacktrace,所以你有一个方法。如果您担心它的性能(目前还为时过早),请确保不要在不需要的时候调用它。我刚刚更新了答案。您应该使用guard语句来防止登录到生产环境中。