Liferay Spring设置autocommit false

时间:2014-05-07 08:32:11

标签: java spring hibernate liferay persistence

有没有办法关闭所有实体在Glassfish中运行的Liferay 6中Spring的自动提交?

我需要这个来保存旧模型的副本以用于审计目的。我在JDBC url中尝试了autocommit = false,并在portal-ext.properties中设置了hibernate.connection.autocommit = false

public <T extends BaseModel<T>> T auditUpdate(final T model, final BasePersistence<T> persistence)

T oldModel = null;

try {
    oldModel = persistence.findByPrimaryKey(model.getPrimaryKeyObj());
} catch (final NoSuchModelException ignored) {
    // This is an insert
}

此外oldModel == model返回true

1 个答案:

答案 0 :(得分:0)

我不确定实际预期的结果,但请记住,Liferay会进行相当多的缓存 - 因此您可能会认为您正在访问数据库,但实际上您只是接受了来自缓存。因此,还有更多级别,我不确定你是否正在攻击正确的级别。

Liferay(EE)有一个您可能想要使用的Audit插件,您也可以拥有ModelListeners或使用审计功能覆盖服务实现。你应该使用什么取决于你想要做多少审计。

请记住,过多的审核很容易给门户带来巨大的性能负担 - 因此您应该仔细选择(并限制)审核的功能。如果您采用通用的“全部审计”方法,每次鼠标点击很容易生成兆字节的审计输出。