Liferay Spring установил автофиксацию false

Есть ли способ отключить автофиксацию для Spring в Liferay 6, работающем в Glassfish, для всех объектов?

Мне нужно это для хранения копии старой модели для целей аудита. Я попробовал autocommit=false в URL-адресе JDBC и установил hibernate.connection.autocommit=false в portal-ext.properties.

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


person cachiama    schedule 07.05.2014    source источник


Ответы (1)


Я не уверен в действительно ожидаемом результате, но имейте в виду, что Liferay довольно много кэширует — таким образом, вы можете подумать, что обращаетесь к базе данных, но на самом деле вы просто получаете объекты из кэша. Таким образом, есть еще много уровней, и я не уверен, что вы атакуете на правильном уровне.

Liferay (EE) имеет подключаемый модуль аудита, который вы можете использовать, также вы можете использовать ModelListeners или переопределять реализации службы с помощью функций аудита. То, что вы должны использовать, зависит от того, какой объем аудита вы хотите провести.

Имейте в виду, что слишком много аудита может легко увеличить производительность вашего портала, поэтому вам следует тщательно выбирать (и ограничивать) проверяемые функции. Легко генерировать мегабайты выходных данных аудита на каждый щелчок мышью, если вы используете общий подход «аудит всех».

person Olaf Kock    schedule 07.05.2014