我使用Hibernate 4.0与envers
当我做更新或插入时,数据被保存到审计表中,模式为0和1
我想在插入后禁用审核。有人能告诉我如何禁用它吗。
我从4.0版本中读到了Hibernate,它会自动注册事件进行审计。
我想知道有什么方法可以禁用insert上的审核?
冬眠恩弗斯。autoRegisterListeners-控制是否自动注册标准Envers侦听器。
您可以注册自定义侦听器以允许或阻止自定义事件工作。
以下是《hibernate指南》中的步骤:
有关更多详细信息,请访问链接代码示例
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"/>
src/main/resources/META-INF/services/org。冬眠积分器。spi。积分器内容示例为:
mycustom.audit.package.audit.EnverseCustomIntegrator
本文向大家介绍我们如何使用MySQL REPLACE语句防止插入重复数据?,包括了我们如何使用MySQL REPLACE语句防止插入重复数据?的使用技巧和注意事项,需要的朋友参考一下 我们可以在插入数据时使用REPLACE语句,以防止插入重复数据。如果我们将使用REPLACE 命令而不是INSERT命令,那么如果记录是新记录,则插入记录的方式与INSERT相同,否则,如果记录是重复记录,则新记录将
我正在使用HiberNate envers进行审计,我的大多数表都很好地执行批处理插入。然而,在我的一个实体上,我有一个经过审计的集合,它似乎不想批处理。 MyEntity: (不确定这是否重要,我正在使用postgresql)。在日志中,我在一个循环中看到了1000条这样的语句 在进行一些调试时,我了解到select for update语句会导致上一次插入的刷新,而不允许它们批处理。这句话似乎
注意:但凡是sql注入漏洞的程序,都是因为程序要接受来自客户端用户输入的变量或URL传递的参数,并且这个变量或参数是组成sql语句的一部分,对于用户输入的内容或传递的参数,我们应该要时刻保持警惕,这是安全领域里的【外部数据不可信任】的原则,纵观web安全领域的各种攻击方式,大多数都是因为开发者违反了这个原则而导致的,所以自然能想到,就是变量的检测、过滤、验证下手,确保变量是开发者所预想的。 1、检
本文向大家介绍ThinkPHP如何防止SQL注入?相关面试题,主要包含被问及ThinkPHP如何防止SQL注入?时的应答技巧和注意事项,需要的朋友参考一下 (1)查询条件尽量使用数组方式,这是更为安全的方式; (2)如果不得已必须使用字符串查询条件,使用预处理机制; (3)使用绑定参数 (4)开启数据字段类型验证,可以对数值数据类型做强制转换;(3.1版本开始已经强制进行字段类型验证了) (5)使
问题内容: 我有一个现有的代码,其中应用程序根据很多条件生成不同的sql并通过hibernate会话createSQLQuery()执行它们。在这里,这些参数与作为普通字符串替换驻留在java类中的sql字符串相连接。现在的问题是,我需要防止sql注入。因此,为此,我必须使用getNamedQuery()并绑定参数,以便hibernate将处理特殊字符。但是问题在于将字符串sql的字符串移动到xm
问题内容: 在将输入数据放入MySQL数据库之前,我可以在Perl中使用该功能来清理输入吗?我不太了解正则表达式,所以在我做自己的功能之前,我想知道是否已经有一个正则表达式。 问题答案: 清理要插入数据库的数据的正确方法是对所有要插入SQL字符串的变量使用占位符。换句话说,永远不要这样做: 而是使用占位符: 然后在执行查询时传递要替换的变量: 您可以将这些操作与某些DBI便捷方法结合使用。上面也可