2014-05-07 82 views
0

有沒有辦法在Liferay 6中爲所有實體關閉在Glassfish中運行的Spring自動提交?Liferay Spring set autocommit false

我需要這個用於保存審計目的舊模型的副本。我試圖自動提交=假的JDBC URL和設置hibernate.connection.autocommit =假在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

回答

0

我不知道實際預期結果,但請記住,Liferay會執行相當多的緩存操作 - 因此您可能會認爲您正在訪問數據庫,但實際上您只是從緩存中獲取對象。因此,還有更多的關卡,我不確定你是否在正確的水平上進行攻擊。 Liferay(EE)有一個您可能想要使用的Audit插件,您也可以擁有ModelListeners或使用審覈功能覆蓋服務實現。你應該使用什麼取決於你想做多少審計。

請記住,太多的審計可以輕鬆地爲您的門戶增加巨大的性能負擔 - 因此您應該仔細選擇(並限制)審計的功能。如果您使用通用的「全部審計」方法,則很容易爲每個鼠標點擊產生數兆字節的審計輸出。

相關問題