将Hibernate活动转储到sql脚本文件

时间:2010-05-05 15:56:53

标签: sql hibernate scripting

我正在尝试将hibernate活动(仅限dml操作)记录到sql脚本文件中。 我的目标是通过执行生成的脚本,有一种方法从给定的起始点重建数据库。

我可以从log4j日志中获取sql查询,但是它们比原始sql查询有更多的信息,我需要解析它们并仅提取有用的语句。

所以我正在寻找一种编程方式,可能是通过监听persist / merge / delete操作并访问hibernate生成的sql语句。

我不喜欢重新发明轮子所以,如果有人知道这样做的话,我会非常感激。

提前致谢

3 个答案:

答案 0 :(得分:1)

通常,最好的方法是打开SQL服务器上的日志记录。所有主要的RDBMS都支持记录它们运行的​​所有SQL语句。这具有捕获Hibernate之外发生的事情的附加优势。

答案 1 :(得分:0)

您还可以尝试使用NHProf拦截/记录数据库的hibernate流量并将其转储到XML文件中。您可能需要手动解析文件,但所有信息都将在那里。

答案 2 :(得分:0)

您也可以直接挂钩 JDBC级别并记录执行的JDBC语句。

P6Spy是检查正在发生的事情的绝佳工具。它可以记录查询,但我不知道你是否可以按重播

我确定还有其他类似的工具(或者更糟糕的是,您可以尝试将您选择的DataSourceConnectionPreparedStatement实现子类化为自己做的。)