2014-05-14 65 views
2

生成SQL脚本,我使用Hibernate 4.3.5决赛对我的Java Swing应用程序,我做很多UDPATEINSERTDELETE它(在HQL或Criteria)。从休眠

现在,我想要做的是导出一个SQL脚本的所有修改在我的数据库上完成,但我不知道该怎么做。这个脚本只需要包含修改(而不是创建表),并将它们放在一个.sql文件(导出的文件路径将由用户选择)

你有什么想法可以解决我的问题吗?

预先感谢您!

[编辑]:一些论坛谈论p6spy,它能回答我的问题吗?

回答

4

p6spy应该可以帮到这里。

一般来说,下面应该为你做的工作:

  1. 在您的应用程序启用p6spy(参见官方文档:http://p6spy.github.io/p6spy/

之后,你基本上有两种选择:

  1. 使用提供:BatchFileLogger,通过以下方式启用它:appender=com.p6spy.engine.spy.appender.BatchFileLogger in spy.properties(但它无效mented尚未见:https://github.com/p6spy/p6spy/issues/119

OR

  1. 实现自定义com.p6spy.engine.spy.appender.MessageFormattingStrategy,将被返回SQL只(见:https://stackoverflow.com/a/23521623/1581069关于实施的想法),并通过在spy.properties配置它:logMessageFormat=FooFormat
  2. 设置sqlexpression以匹配您所需的查询 - 限制CREATE/ALTER/... TABLE/SEQUENCE/...(请参阅官方文档:http://p6spy.github.io/p6spy/2.0/configandusage.html

还是有一些棘手的点,如:

+0

谢谢你的帮助,所以我会尝试'p6spy'。我的应用程序是“多方言”,这意味着我让用户在“Oracle SQL”,“MS SQL Server 2005”或“MS SQL Server 2005”(在登录屏幕上)之间进行选择, 。那么我该如何动态设置'realdriver'? –

+0

好吧,这取决于,如果你使用jdbc4驱动程序+会使用jdbc url proxing(对于Oracle,类似于:'jdbc:p6spy:oracle:thin:@localhost:1521:XE')=>不需要配置' realdriver'。还是要看你是否使用了一些应用服务器,...请随时索取更多详细信息:https://groups.google.com/forum/#!forum/p6spy-users –

+0

顺便说一句。属性:'realdriver'已被弃用,支持:'driverlist'(仍然有些文档可能已过时) –