Начало работы с envers + hibernate (простой и полный пример) - PullRequest
3 голосов
/ 20 мая 2009

У меня работает Hibernate и я хотел бы попробовать добавить Обеспечивает функциональность аудита / ревизии , но не могу понять, что требуется. (мой пример компилируется и запускается нормально, и я получаю обычную функциональность Hibernate, но в моей базе данных нет таблиц аудита.) Кто-то уже делал это раньше? Работает ли он с базой данных H2, используя диалект HSQLDB? Существует ли простая и полная пример программы в Интернете?

edit: позвольте мне немного перефразировать. В конце я хотел бы, чтобы процесс сборки создал файл .jar, который я могу установить на другом компьютере, и с соответствующим файлом .properties и драйвером JDBC создаст (или позволит мне создать) соответствующую базу данных. таблицы, если их еще нет. Как я могу это сделать?

edit: Пока, если я хочу запустить задачу ant, предложенную Jamie B, мне нужно настроить мой путь к классам, чтобы он нашел jav-файл envers и hibernate-tools jar-файл, который находится внутри zip-файла инструментов Hibernate. И я до сих пор не получил работу. Если / когда я это сделаю, я думаю, что, возможно, тогда я смогу создать файл SQL и поместить его в качестве ресурса в свой окончательный файл .jar, который затем я смогу использовать из самой моей программы. (хотя у меня в голове поднимается красный флаг, думая о проблемах безопасности ... хм ....)

Ответы [ 3 ]

2 голосов
/ 05 июня 2009

Похоже, вы ищете следующее свойство hibernate:

hibernate.hbm2ddl.auto

Из документации :

Автоматическая проверка или экспорт схема DDL для базы данных, когда SessionFactory создан.

При этом автоматически создаются таблицы схем, названные в соответствии с установленными вами свойствами . Никаких дополнительных библиотек или задач муравья не требуется.

Я, например, добавляю это к моему hibernate.cfg.xml, установленному на update для моих баз данных разработки. Вы также можете добавить это свойство программно, используя объект configuration Hibernate.

1 голос
/ 18 ноября 2009

после некоторых экспериментов у меня есть генерация рабочего стола с envers

Я использовал эти параметры hibernate.hbm2ddl.auto = create-drop

ошибка появляется, потому что таблица существует, поэтому я думаю, что параметр hibernate.hbm2ddl.auto = update решит ее

Вход:

    5755 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: myappcompany.base.Company_AUD -> company_AUD
5782 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: org.hibernate.envers.DefaultRevisionEntity -> REVINFO
5915 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory
6746 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
6784 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - Running hbm2ddl schema export
6785 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - exporting generated schema to database
9004 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - Unsuccessful: create table company (ID bigint not null auto_increment, CREATED datetime, CREATED_BY varchar(255), MODIFIED datetime, MODIFIED_BY varchar(255), NAME varchar(255) not null, primary key (ID))
9004 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - Table 'company' already exists
10227 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - schema export complete

мой конфиг:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">

    <!--
    Data Source config 
     -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close" p:driverClassName="${jdbc.driver}" p:url="${jdbc.url}"
        p:username="${jdbc.username}" p:password="${jdbc.password}" />

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
        p:entity-manager-factory-ref="entityManagerFactory" />

    <!-- 
    JPA config   
    -->
    <tx:annotation-driven />

    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
        p:persistence-xml-location="${persistence.xml.location}"
        p:data-source-ref="dataSource">
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
                p:showSql="true" p:generateDdl="true">
            </bean>
        </property>
        <property name="jpaProperties">
            <value>
                hibernate.ejb.naming_strategy=org.hibernate.cfg.DefaultNamingStrategy
                hibernate.dialect=${hibernate.dialect}
                hibernate.hbm2ddl.auto=${hibernate.hbm2ddl.auto}
            </value>
        </property>
    </bean>

    <bean
        class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
</beans>

Через несколько дней я приведу полный пример

1 голос
/ 23 мая 2009

Читали ли вы главу 6 справочного документа (www.jboss.org/file-access/default/members/envers/downloads/envers-1.2.0.ga-hibernate-3.3.pdf)? Похоже, что таблицы _AUD не создаются стандартным способом Hibernate; есть AntTask, который увеличивает его.

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