如何使用envers 4 hibernate防止插入审核

如何使用envers 4 hibernate防止插入审核,hibernate,hibernate-envers,Hibernate,Hibernate Envers,我正在使用Hibernate4.0和envers 当我执行更新或插入时,数据将以模式a 0和1保存到审核表中 我想在插入后禁用审核。有人能告诉我如何禁用它吗 我从4.0版读到hibernate,它会自动注册事件进行审核 有没有一种方法可以禁用插入时的审核?删除 @Audited 实体上的注释(如果它们出现在实体类/字段名称上)。如果您有自定义表来存储审核日志,请删除这些实体 hibernate.envers.autoRegisterListeners-控制是否自动注册标准envers侦听器

我正在使用Hibernate4.0和envers

当我执行更新或插入时,数据将以模式a 0和1保存到审核表中

我想在插入后禁用审核。有人能告诉我如何禁用它吗

我从4.0版读到hibernate,它会自动注册事件进行审核

有没有一种方法可以禁用插入时的审核?

删除

 @Audited 
实体上的注释(如果它们出现在实体类/字段名称上)。如果您有自定义表来存储审核日志,请删除这些实体

hibernate.envers.autoRegisterListeners-控制是否自动注册标准envers侦听器

您可以注册自定义侦听器以允许或阻止自定义事件工作

以下是《hibernate指南》中的步骤:

  • 通过将Hibernate.listeners.Envers.autoRegister Hibernate属性设置为false,关闭自动环境事件侦听器注册
  • 为适当的事件侦听器创建子类。例如,如果要有条件地审核实体插入,请扩展org.hibernate.envers.eventEnversPostInsertEventListenerImpl类。将条件审核逻辑放在子类中,如果需要执行审核,则调用super方法
  • 创建自己的org.hibernate.integrator.spi.integrator实现,类似于org.hibernate.envers.event.EnversIntegrator。使用事件侦听器类而不是默认的
  • 为了在Hibernate启动时自动使用integrator,您需要将aMETA INF/services/org.Hibernate.integrator.spi.integrator文件添加到jar中。该文件应包含实现接口的类的完全限定名
  • 代码示例

    import org.hibernate.envers.configuration.spi.AuditConfiguration;
    import org.hibernate.envers.event.spi.EnversPostInsertEventListenerImpl;
    import org.hibernate.event.spi.PostInsertEvent;
    
    public class SprEnversPostInsertEventListenerImpl extends EnversPostInsertEventListenerImpl {
    
        private static final long serialVersionUID = 1L;
    
        public SprEnversPostInsertEventListenerImpl(AuditConfiguration enversConfiguration) {
            super(enversConfiguration);
        }
    
        @Override
        public void onPostInsert(PostInsertEvent event) {
            super.onPostInsert(event);
        }
    
    }
    
        public class EnverseCustomIntegrator extends EnversIntegrator {
    
        public static final String  AUTO_REGISTER   = "hibernate.listeners.envers.autoRegister";
        private AuditConfiguration  enversConfiguration;
    
        @Override
        public void integrate(org.hibernate.cfg.Configuration configuration, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
    
    
    
            final EventListenerRegistry listenerRegistry = serviceRegistry.getService(EventListenerRegistry.class);
            listenerRegistry.addDuplicationStrategy(EnversListenerDuplicationStrategy.INSTANCE);
    
            enversConfiguration = AuditConfiguration.getFor(configuration, serviceRegistry.getService(ClassLoaderService.class));
    
            if (enversConfiguration.getEntCfg().hasAuditedEntities()) {
                listenerRegistry.appendListeners(EventType.POST_DELETE, new SprEnversPostDeleteEventListenerImpl(enversConfiguration));
                listenerRegistry.appendListeners(EventType.POST_INSERT, new SprEnversPostInsertEventListenerImpl(enversConfiguration));
                listenerRegistry.appendListeners(EventType.POST_UPDATE, new SprEnversPostUpdateEventListenerImpl(enversConfiguration));
                listenerRegistry.appendListeners(EventType.POST_COLLECTION_RECREATE, new SprEnversPostCollectionRecreateEventListenerImpl(enversConfiguration));
                listenerRegistry.appendListeners(EventType.PRE_COLLECTION_REMOVE, new SprEnversPreCollectionRemoveEventListenerImpl(enversConfiguration));
                listenerRegistry.appendListeners(EventType.PRE_COLLECTION_UPDATE, new SprEnversPreCollectionUpdateEventListenerImpl(enversConfiguration));
            }
    
        }
    }
    
    自定义集成器的代码示例

    import org.hibernate.envers.configuration.spi.AuditConfiguration;
    import org.hibernate.envers.event.spi.EnversPostInsertEventListenerImpl;
    import org.hibernate.event.spi.PostInsertEvent;
    
    public class SprEnversPostInsertEventListenerImpl extends EnversPostInsertEventListenerImpl {
    
        private static final long serialVersionUID = 1L;
    
        public SprEnversPostInsertEventListenerImpl(AuditConfiguration enversConfiguration) {
            super(enversConfiguration);
        }
    
        @Override
        public void onPostInsert(PostInsertEvent event) {
            super.onPostInsert(event);
        }
    
    }
    
        public class EnverseCustomIntegrator extends EnversIntegrator {
    
        public static final String  AUTO_REGISTER   = "hibernate.listeners.envers.autoRegister";
        private AuditConfiguration  enversConfiguration;
    
        @Override
        public void integrate(org.hibernate.cfg.Configuration configuration, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
    
    
    
            final EventListenerRegistry listenerRegistry = serviceRegistry.getService(EventListenerRegistry.class);
            listenerRegistry.addDuplicationStrategy(EnversListenerDuplicationStrategy.INSTANCE);
    
            enversConfiguration = AuditConfiguration.getFor(configuration, serviceRegistry.getService(ClassLoaderService.class));
    
            if (enversConfiguration.getEntCfg().hasAuditedEntities()) {
                listenerRegistry.appendListeners(EventType.POST_DELETE, new SprEnversPostDeleteEventListenerImpl(enversConfiguration));
                listenerRegistry.appendListeners(EventType.POST_INSERT, new SprEnversPostInsertEventListenerImpl(enversConfiguration));
                listenerRegistry.appendListeners(EventType.POST_UPDATE, new SprEnversPostUpdateEventListenerImpl(enversConfiguration));
                listenerRegistry.appendListeners(EventType.POST_COLLECTION_RECREATE, new SprEnversPostCollectionRecreateEventListenerImpl(enversConfiguration));
                listenerRegistry.appendListeners(EventType.PRE_COLLECTION_REMOVE, new SprEnversPreCollectionRemoveEventListenerImpl(enversConfiguration));
                listenerRegistry.appendListeners(EventType.PRE_COLLECTION_UPDATE, new SprEnversPreCollectionUpdateEventListenerImpl(enversConfiguration));
            }
    
        }
    }
    
    持久性上下文配置

                <property name="hibernate.integration.envers.enabled" value="true"/>
            <property name="hibernate.envers.autoRegisterListeners" value="true"/>