Получение сценария SQL из обновления Hibernate - PullRequest
1 голос
/ 23 февраля 2011

Я ищу способ получить скрипт обновления SQL, когда Hibernate автоматически обновляет таблицы.

Я использую hibernate.hbm2ddl.auto=update только в среде разработки, и мне нужен сценарий SQL, который обновляет таблицы для производства.

Я хочу эти сценарии SQL в формате TXT для ревизии и возможного редактирования.

Как это можно сделать? Спасибо за любой совет.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

Есть некоторые предложения и общее обсуждение здесь .

В двух словах, вы можете включить ведение журнала (к стандартному выводу):

hibernate.show_sql=true

В качестве альтернативы,если вы используете log4j, вы можете добавить это в свой файл log4j.properties:

log4j.logger.org.hibernate.SQL=DEBUG

Оба эти подхода будут выводить подготовленные операторы Hibernate с параметрами (поэтому сами значения параметров не являются встроенными).Чтобы обойти это, вы можете использовать перехватчик, такой как P6Spy .Подробности об этом можно найти здесь .

0 голосов
/ 01 июня 2011

org.hibernate.cfg.Configuration класс имеет метод:

public java.lang.String[] generateSchemaUpdateScript( Dialect, DatabaseMetadata)

что генерирует требуемый скрипт обновления.

Я только что реализовал это в Grails:

configuration = new DefaultGrailsDomainConfiguration(
                    grailsApplication: grailsApplication,
                    properties: props) 
//this extends hibernate config

Connection c = SessionFactoryUtils.getDataSource(sessionFactory).getConnection(props.'hibernate.connection.username', props.'hibernate.connection.password')
<br/>md = new DatabaseMetadata(c, DialectFactory.buildDialect(props.'hibernate.dialect'))

configuration.generateSchemaUpdateScript(DialectFactory.buildDialect(props.'hibernate.dialect'), md)
)
check SchemaExport script in grails, for further information, it uses hibernate to generate schema.

(Я должен был реализовать это как сервис, потому что у нас есть модель внешнего домена)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...