Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Создание БД используя Hibernate


Автор: MarkHunt 16.6.2014, 16:51
Как лучше всего вести разработку БД приложения с Hibernate?

Я попробовал разные способы разработки БД.

1. Создавал схему вручную.
2. Полагался на hbm2ddl.auto=update
3. И использовал hibernate-tools в Ant билде. С помощью него можно например, генерировать sql скрипты в файл, и потом прогонять их вручную в БД.
   Выглядит примерно так:
Код

<!-- Schema export -->
    <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="project.classpath"/>

    <target name="schemaexport" depends="compile, copymetafiles" description="Exports a generated schema to DB and file">
        <hibernatetool destdir="${basedir}">
            <classpath path="${build.dir}"/>
            <annotationconfiguration configurationfile="${build.dir}/hibernate.cfg.xml"/>
            <hbm2ddl drop="true" create="true" export="true" outputfilename="helloworld-ddl.sql" delimiter=";" format="true"/>
        </hibernatetool>
    </target>


Первый способ, я считаю самым надёжным, но требует намного больше времени, чем например второй.

Про второй способ почитал http://stackoverflow.com/questions/221379/hibernate-hbm2ddl-auto-update-in-production, что он не надёжен.
И, конечно же в продакшане, крайне не рекомендуется его использовать. Об этом также написано в книге Java Persistence with Hibernate
Код

WARNING We’ve seen Hibernate users trying to use SchemaUpdate to update the
schema of a production database automatically. This can quickly end in
disaster and won’t be allowed by your DBA.


Про третий способ я прочитал также из этой книги. Но мне не понравилось то, что
при генерировании схемы БД, Ant выбрасывал исключение на отсутствие какого-то класса в Hibernate, хотя DDL скрипты для схемы, вроде как, генерировались.

Также читал на stackoverflow http://stackoverflow.com/questions/2585641/hibernate-jpa-db-schema-generation-best-practices, где советуют
создавать схему вручную и использовать LiquiBase (только в чём смысл использования этого инструмента, если я и так буду вручную делать схему?).

Если кто встречался с этой проблемой, какой способ вы считаете убодным и надёжным для создания/обновления структуры БД в разработке/продакшене?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)