我正在尝试将hibernate活动(仅限dml操作)记录到sql脚本文件中。 我的目标是通过执行生成的脚本,有一种方法从给定的起始点重建数据库。
我可以从log4j日志中获取sql查询,但是它们比原始sql查询有更多的信息,我需要解析它们并仅提取有用的语句。
所以我正在寻找一种编程方式,可能是通过监听persist / merge / delete操作并访问hibernate生成的sql语句。
我不喜欢重新发明轮子所以,如果有人知道这样做的话,我会非常感激。
提前致谢
答案 0 :(得分:1)
通常,最好的方法是打开SQL服务器上的日志记录。所有主要的RDBMS都支持记录它们运行的所有SQL语句。这具有捕获Hibernate之外发生的事情的附加优势。
答案 1 :(得分:0)
您还可以尝试使用NHProf拦截/记录数据库的hibernate流量并将其转储到XML文件中。您可能需要手动解析文件,但所有信息都将在那里。
答案 2 :(得分:0)
您也可以直接挂钩 JDBC级别并记录执行的JDBC语句。
P6Spy是检查正在发生的事情的绝佳工具。它可以记录查询,但我不知道你是否可以按重播。
我确定还有其他类似的工具(或者更糟糕的是,您可以尝试将您选择的DataSource
,Connection
和PreparedStatement
实现子类化为自己做的。)