我正在为我的 Java Swing 应用程序使用 Hibernate 4.3.5-Final,并且我做了很多工作UDPATE
, INSERT
and DELETE
与它(在 HQL 中或与Criteria
).
现在,我想做的是导出对数据库所做的所有修改的 SQL 脚本,但我不知道该怎么做。该脚本只需要包含修改(而不是表的创建)并将它们放在.sql
文件(导出的文件路径将由用户选择)
您有什么想法可以解决我的问题吗?
先感谢您 !
[编辑]:一些论坛谈论p6spy
,它能解决我的问题吗?
p6spy
应该在这里有帮助。
一般来说,以下内容应该适合您:
- enable
p6spy
在您的应用程序中(请参阅官方文档:http://p6spy.github.io/p6spy/ http://p6spy.github.io/p6spy/)
之后你基本上有两个选择:
- 使用提供:BatchFileLogger https://github.com/p6spy/p6spy/blob/master/src/main/java/com/p6spy/engine/spy/appender/BatchFileLogger.java,通过以下方式启用它:
appender=com.p6spy.engine.spy.appender.BatchFileLogger
in spy.properties
(然而,它还没有记录,请参阅:https://github.com/p6spy/p6spy/issues/119 https://github.com/p6spy/p6spy/issues/119)
OR
- 实施定制
com.p6spy.engine.spy.appender.MessageFormattingStrategy
,这将仅返回 sql(请参阅:https://stackoverflow.com/a/23521623/1581069 https://stackoverflow.com/a/23521623/1581069有关实施的想法)并将其配置为spy.properties
via: logMessageFormat=FooFormat
- set
sqlexpression
匹配您需要的查询 - 限制CREATE/ALTER/... TABLE/SEQUENCE/...
(参见官方文档:http://p6spy.github.io/p6spy/2.0/configandusage.html http://p6spy.github.io/p6spy/2.0/configandusage.html)
仍然有一些棘手的点,例如:
-
databaseDialectDateFormat
属性(能够在不进行修改的情况下重播输出)。有关一些常见数据库的灵感,请参阅 p6spy 本身的单元测试:https://github.com/p6spy/p6spy/tree/master/src/test/resources/com/p6spy/engine/spy https://github.com/p6spy/p6spy/tree/master/src/test/resources/com/p6spy/engine/spy
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)