2014-05-14 90 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'(仍然有些文檔可能已過時) –